2013-02-04 5 views
2

사이 DIFF는 추가로 3 개 개의 파일이자식 충돌 : 당신이 foo.html 파일에서 충돌이있는 경우 바자에서 BASE 버전과 기타 버전

foo.html.BASE 
foo.html.OTHER 
foo.html.THIS 

그런 다음

diff -Naur foo.html.BASE foo.html.OTHER 

는 비교 할 수 있도록합니다 다른 변경 세트와 공통된 근거는 정말로 도움이됩니다. 왜냐하면 정확히 무엇이 바뀌 었는지 알려주므로, 왜 그들이 변경했는지 대답하는 데 도움이됩니다. 예를 들어 변경된 모든 것이 공백 인 경우 자신있게 변경할 수 있습니다.

어떻게해야합니까?

답변

3

git 작업 디렉토리에있는 세 개의 파일의 실제 전체 복사 버전을 저장하지 않습니다. 대신 충돌 마커가있는 단일 파일을 저장합니다. 그러나 :<stage>:<filename> 구문 (git 도구까지 - 파일이 실제로 존재하지 않으므로 정상적으로 diff에 표시되지 않습니다.)을 사용하여 해당 버전을 사용할 수 있습니다. 예를 들어 git diff :1:foo.html :2:foo.html을 실행하면 BASETHIS의 차이점을 확인할 수 있습니다. 3 단계는 OTHER 버전입니다. git mergetool foo.html 또는 git difftool foo.html을 사용할 수도 있습니다. 당신이 정말로 그들에 비 git 도구를 사용해야하는 경우, 당신은이 작업을 수행 할 수 있습니다

git show :1:foo.html > foo.html.BASE 
git show :2:foo.html > foo.html.THIS 
git show :3:foo.html > foo.html.OTHER 
diff ...... 
2

외부 도구의 파일과 간단한 차이를 얻으려면 git difftool을 사용할 수 있습니다.

충돌 해결 상황에서는 git mergetool을 사용할 수도 있습니다.

그들은 특정 구성 및 사용 옵션 집합을 공유하지만 git mergetool은 실제로 Bazaar에서 알고있는 것과 유사한 파일을 만듭니다. 이에 대한 자세한 내용은 위에 링크 된 맨 페이지에 설명되어 있습니다.

difftoolmergetool은 일반적인 diff 및 병합 도구를 알고 있으며 추가 구성없이 사용할 수 있습니다 (예 : vimdiff, meld, k3diff 등).하지만 사용자가 직접 구성하거나 사용자 지정 옵션을 사용하여 동작을 변경할 수 있습니다 그 도구들.

mergetool을 원하는대로 수행해야합니다 (예 : mergetool은 병합 도구가 종료 된 후에 해당 파일을 삭제하지 않도록 구성 할 수 있으므로 더 자세히 검사 할 수 있습니다). 이제 시작점이 생겼으므로 특히 사용자 페이지가 사용자 취향에 너무 기술적 인 경우 Google이 도움이됩니다. 특정 문제가 발생하면 새 질문을 열 수 있습니다

)

+0

또한 http://stackoverflow.com/questions/255202/how-do-i-view-git-diff을 확인 -output-with-a-visual-diff-program은 여러분이 선택한 diff 도구를 구성합니다 ... –