test.txt
라는 및 파일이 병합 시도로 인한 충돌 마커 왼쪽되었다는 것을, 당신은 어떻게 든 그 갈등의 수동 해상도를하고있는 것이지 한, 당신은 다시 수 - 몇 가지 명령으로 충돌 마커로 파일을 만듭니다.
배경으로 병합시 파일에 수동 충돌 해결이 필요할 경우 git
색인에 해당 파일의 세 가지 다른 복사본 ("단계"라고 함)이 있음을 알 수 있습니다. 1 단계는 병합중인 두 버전의 파일의 공통 조상이며 2 단계와 3 단계는 병합하려는 두 가지 분기의 두 버전입니다. git
유틸리티 중 일부는 전부는 아니지만이 항목을 참조하는 :<stage>:<filename>
구문을 알고 있습니다.
그래서, 당신이 먼저해야 할 일을 곳이 세 파일의 임시 복사본을 다시 만드는 것입니다 - 내가 여기 /tmp
를 사용합니다,하지만 필수 아니에요 : 다음
git cat-file -p :1:test.txt > /tmp/test.txt.1
git cat-file -p :2:test.txt > /tmp/test.txt.2
git cat-file -p :3:test.txt > /tmp/test.txt.3
의 git
배관을 사용 git merge-file
명령을 사용하여 적절한 충돌 표식이있는 파일을 다시 작성하십시오. 여기서 인수의 순서가 중요하며 병합을 다시 수행 할 때이를 참조하려는 경우에 대비하여 이미 수행 한 작업을이 파일에 저장하는 것이 좋습니다.
mv test.txt test.txt.broken
git merge-file -p /tmp/test.txt.2 /tmp/test.txt.1 /tmp/test.txt.3 > test.txt
이 충돌 마커 test.txt
을 (다시 만듭니다하지만 일반적으로 포함되어있는 지점 이름 코멘트를하지 않고 - 당신이 정말로 사람을 원한다면, 당신은 몇 가지 -L <branchname>
인수를 추가해야합니다 - 당신이 git help merge-file
를 입력 할 수 있습니다 자세한 정보를 얻으십시오).
그 시점에서 임시 파일을 정리하고 해당 파일의 충돌을 해결할 수 있습니다. 완료되면 git add
에 기억하고 나머지 파일을 계속 진행하십시오.
당신은'git mergetool'을 사용하고 있거나 손으로 해결하고 있습니까? – asm
무엇을 사용하든 파일을 망칠 수 있습니다. 일반적으로 나는 그것을 수동으로한다. –