program tip

충돌 해결 병합

radiobox 2020. 12. 31. 08:08
반응형

충돌 해결 병합


Git에서 병합 충돌이 발생하면 다음과 같은 정크가 충돌하는 파일에 삽입됩니다. 세 가지 질문 :

  1. 이 주석을 어떻게 읽습니까?
  2. 이러한 병합 충돌을 수정할 때 사용할 전략은 무엇입니까?
  3. 문제를 쉽게 해결할 수 있도록 이러한 파일을 읽고 두 버전을 나란히 표시하는 방법을 알고있는 Mac 용 GUI 도구가 있습니까?

여기에 이미지 설명 입력

참고 : 관련성이있는 경우 GitHub의 Mac GUI 클라이언트를 사용하고 있습니다.


<<<<<<사이의 모든 것은 병합 작업을 시작하기 전에 커밋 된 상태 인 개정 ======에서 비롯 HEAD됩니다 ( git merge트리가 더러워지면 불평하므로 작업 디렉토리와 동일해야합니다).

사이의 부품 ======>>>>>>버전 존재가 합병에서 온다. 뒤의 텍스트 >>>>>>는 충돌하는 변경 사항을 도입 한 커밋의 주석입니다.

충돌 마커가 있다는 것은 파일의이 부분의 기본 버전이 두 "새"버전과 다르다는 것을 의미합니다. 기본 버전 (마지막 공통 조상)은 표시되지 않습니다.

보다 편안한 병합을 원하고 GUI를 사용할 수 있다면 kdiff3를 살펴볼 것을 제안합니다.


이제 Git이 파일에 삽입하는 의미없는 마커를 읽는 것보다 더 나은 솔루션이 있습니다. Black Pixel의 두 번째 diff 도구 릴리스 인 Kaleidoscope 2 는 이제 병합 도구이기도합니다. 무료는 아니지만 아름답게 작동합니다.

Kaleidoscope 2를 설치하면 Git과 통합하기가 정말 간단합니다. Kaleidoscope를 열고 메뉴 모음에서 Kaleidoscope > 통합…을 선택합니다 .

Kaleidoscope의 통합 메뉴 옵션.

그러면이 창이 나타납니다. 간단하게 선택 힘내 왼쪽 탐색 메뉴에서 다음 설치 ksdiff명령 줄 도구를 다음 만화경 망할 놈의 기본은 diff와 병합 도구를합니다.

Kaleidoscope의 Git 통합 대화 상자.

마지막으로 Git에서 병합 충돌이 발생하면 명령 줄로 이동하여 git mergetool. 이제 충돌을 쉽게 읽을 수 있습니다. 즐겨.

병합 충돌에 대한 Kaleidoscope 정상보기.


<<<< HEAD #Where the conflict starts

#Previous Revision

========== # The point where things look iffy

#Things that changed

>>>>> New Commit # Point where the conflict ends

Mac의 Xcode에는 FileMerge가 함께 제공되며 opendiff.

git mergetool -t opendiff


(그래픽) 병합 도구를 구성하고 해당 도구를 사용하여 충돌 해결을 수행 할 수 있습니다.

또한 git mergetool명령을 살펴보십시오 . 사전 정의 된 도구 중 하나가 설치되어 있거나 다른 도구를 구성한 경우 해결 도구 http://schacon.github.com/git/git-mergetool 이 열립니다 . HTML

GUI 도구에 관심이 있다면 GUI 도구가 쉽게 해상도를 결정하는 데 도움이되므로 표기법이 실제로 무엇을 의미하는지 걱정할 필요가 없습니다. =====>>>>>표시된 부분 이 충돌 섹션 임을 이해하십시오 .


동일한 파일에 대한 변경 사항이있는 두 개의 분기가 있고이를 병합하려고하면 병합 충돌이 발생합니다. 충돌하는 파일 목록을 보려면 git status터미널에서 실행 하십시오.

파일의 충돌하는 줄은 시각적 표시로 표시됩니다 <<<<<.-충돌은이 줄 이후에 시작됩니다. =====-HEAD 및 merging_branch의 변경 사항을 고안합니다. >>>>>-충돌 라인의 끝.

<<<<<<< HEAD
conflicted text from HEAD
=======
conflicted text from merging_branch
>>>>>>> merging_branch

충돌하는 파일을 수정하고 병합 할 준비가되면 실행 git add하고 git commit병합 커밋을 생성하기 만하면됩니다. 커밋이 이루어지면 git push분기가 변경됩니다.

참조 문서 : Git merge .

참조 URL : https://stackoverflow.com/questions/9207260/merge-conflict-resolution

반응형