2013-10-08 1 views
1

Git mergetool은 멋진 명령입니다. 그러나 나는 매우 화가났다. 모두 충돌 (오히려 단지 몇 개)이 아니라 BASE (아마도 수백 개)와 관련된 diffs를 보여준다. This answer (팁 하나)는 솔루션을 제공합니다 ... 그러나 매뉴얼입니다 (git merge의 출력을 가져 와서 청크로 세 개의 다른 파일을 만들고 비교하십시오). 필자는이 작업을 자동으로 수행하는 필자가 가장 좋아하는 시각적 차이 편집 응용 프로그램의 래퍼를 작성하는 데 30 분을 보내고 자합니다. 그러나 이미 이것을 달성 할 수있는 방법이 있습니까?git mergetool에서 diff 표시자를 인식하는 방법

+0

어떤 머지 도구를 사용하십니까? kdiff3은 충돌이없는 모든 차이점을 자동으로 해결합니다 (심지어 일부 충돌까지도). 아마도 귀하의 도구는 비슷한 옵션을 가지고 있습니까? – asm

+0

나는 kdiff3을 시도했고, 그 기능 ("Automatically Solve Simple Conflicts")은 실제로 매우 훌륭하다. - 내가 일반적으로 사용하는 도구 인 meld가 부족하다. 그래도 kdiff3는 git만큼 좋지 않으므로 더 많은 갈등이 남아 있습니다. 더욱이, git은 어쨌든 작업을 수행하기 때문에, 그런 마커를 사용하는 것은 불가능하다는 것이 이상합니다 ... 그러나 그것은 말했습니다. 팁을 주셔서 감사합니다. –

+0

나는 당신이 무엇을 의미하는지 잘 모르겠습니다. 게다가, 어쨌든이 자식은 일을합니다. git이 병합 자체를 해결하면 mergetool과의 충돌을 해결할 필요가 없습니다. – asm

답변

0

글쎄, 나는 주위에 준비 해결책을 찾을 수 없습니다, 그래서 문제의 간단한 래퍼를 작성 결국 : 어떻게 작동하는지

http://pietrobattiston.it/mergetooltool

은 다음과 같습니다 자식이 당신이 "충돌 파일의 충돌을 발견 알려줍니다. txt ". 다른 버전을 구분하여 마커를 남깁니다.

"/path/to/mergetooltool.py conflicted.txt"라고하면 "conflicted.txt"를 구문 분석하고 마커를 인식하며 각 버전마다 하나씩 두 개의 개별 파일을 만듭니다.

다음으로 diff GUI를 엽니 다 (meld를 사용하면 9 행에서 간단히 설정할 수 있음). 충돌을 해결할 수 있습니다 (사용하려는 버전은 왼쪽 창에 남겨 두어야합니다. .txt.local "), 닫으면 병합 된 버전이"conflicted.txt "에 다시 저장됩니다.

그런 다음 "git add conflicted.txt"와 (다른 충돌 파일이없는 경우) "git commit"을 수행하면 완료 될 수 있습니다.

왜 순수한 자식보다 나은가요? : 글쎄, 맛에 따라 다르지만 diff GUI가 유용하다는 것을 알게되었습니다.

왜 자식 mergetool보다 그 것이다 : 당신이 충돌을 해결해야합니다 때문이다.

diff 도구로 kdiff를 사용하는 git mergetool보다 더 나은 이유는 무엇입니까? 원하는 도구를 사용할 수 있고, 해결할 수있는 충돌을 해결할 때 kitiff보다 약간 나은 이유는 무엇입니까?

+0

와우. 이것은 갈등 해결에있어서 가난한 사람들을 둘러싼 재미있는 방법입니다. 정말 놀라운 UI가 있어야합니다. –

+0

내가 무슨 뜻인지 모르겠지만, kdiff3 역시 충돌 해결에서 git보다 열등하다. –