Git 에서 사용하기 좋은 diff 툴은 어떤게 있을까요?

2,477 views
Skip to first unread message

SangHee Kim

unread,
May 13, 2013, 4:03:34 AM5/13/13
to git-and-...@googlegroups.com
Git 을 사용하다보면 merge conflict 해결등에 사용하는 diff 툴이 필요하죠. 이때 어떤 툴이 좋을까요?

SangHee Kim

unread,
May 13, 2013, 4:31:51 AM5/13/13
to git-and-...@googlegroups.com
스택 오버플로우에 아래와 같은게 하나 있네요.


제가 현업에서 사용해본 것 중에 마음에 드는것을 몇 가지는

1. vimdiff : 키보드에서 손을 떼지 않고 빠르게 머지를 수행할 수 있어서 좋다. 단, 텍스트 기반이라서 익숙해지는데 시간이 필요하다. (의외로 명령어는 얼마 안쓴다)
2. meld : 상당히 간단한 GUI 툴. 간단한 머지할 때 meld 가 좋다.

그 외에

- p4merge : perforce 에서 제공하는 merge tool 인데 git config 설정으로 p4merge 를 git 과 연동하여 사용할 수 있다.
- beondcompare : 흔히 BC라고 말하는 툴. 익숙하고 좋으나 사용이라서 회사에서 사주지 않는 경우 현업에서 사용하기 어렵다는게 문제.

개인적으로 vimdiff 는 꼭 알아두면 좋은데 이유는

- 어느 콘솔에나 있다
- 별다른 git config 설정 없이 사용할 수 있다
- 마우스에서 손을 떼지 않고 빠르게 작업이 가능하다 (예. conflict 하나가 났는데 머지할 파일이 50개 정도 되면 마우스 사용이 짜증난다. 그래서 vimdiff 로 돌아오기도...)

그럼~

2013년 5월 13일 월요일 오후 5시 3분 34초 UTC+9, SangHee Kim 님의 말:

Brian Moon

unread,
May 14, 2013, 2:54:39 AM5/14/13
to git-and-...@googlegroups.com
git 윈도우 배포 버전에는 vimdiff 포함 안되어 있네요.

2013년 5월 13일 월요일 오후 5시 31분 51초 UTC+9, SangHee Kim 님의 말:

SangHee Kim

unread,
May 14, 2013, 3:17:16 AM5/14/13
to git-and-...@googlegroups.com
네 맞습니다. git bash 에는 설치되어 있지 않습니다. 구글링을 해도 못찾겠네요. 그래서 제가 'git bash 에서 vimdiff 를 diff 툴로 사용하기'에 대한 질문을 방금 stackoverflow 에 올려놓았습니다. 언제 답변이 올라올지는 모르겠으나...


더불어 윈도에서는 p4merge 를 diff 툴로 사용하면 좋습니다. (머지툴로도 좋구요) 현업에서 사용해봤는데 p4merge 자체가 상용인 perforce 에서 제공하는 툴이라서 사용하기 괜찮았습니다. (저는 그래도 vimdiff 를 리눅스 콘솔로 윈도에서 사용했습니다만) 사용법은 아래에 나와있습니다. (7-1 장)


더불어 progit 에도 외부 difftool 및 mergetool 설정 방법이 나와있습니다.


2013년 5월 14일 화요일 오후 3시 54분 39초 UTC+9, Brian Moon 님의 말:

SangHee Kim

unread,
May 14, 2013, 6:24:21 AM5/14/13
to git-and-...@googlegroups.com
윈도우에서 difftool 과 mergetool 로 p4merge 사용은 아래 링크를 확인하세요.


링크의 내용은 아래와 같습니다.

Windows 에서 git for windows 설치 후 vimdiff 를 git bash 에서 발견할 수 없습니다. 이때 p4merge 등을 사용할 수 있습니다. 의외로 구글링을 해보니 복잡한 내용들이 꽤 많이 나오네요. 그래서 제가 직접 해보고 가장 간단한 것으로 소개합니다.

1. install p4merge
- P4Merge: Visual Merge Tool 를 찾아서 우측에 다운받을 플랫폼 등을 자신의 플랫폼에 맞게 설정 (다운로드 하면 다음 화면에서 registration 이 나오는데 skip 해도 다운이 된다)
- p4vinst.exe 와 같은 파일이 로컬에 다운로드 된다.
- 다운받은 파일을 설치할 때 첫 화면 'Select Features' 에서 Visual Merge Tool (P4Merge) 를 제외하고 모두 'This feature will not be installed' 를 선택해서 x 표시가 나오게 한다. (p4merge 만 설치)
- 설치를 진행한다

주의 : p4merge 설치가 끝나면 환경 변수 (environment variables) 에 시스템 변수 (system variable) 의 Path 에 C:\Program Files\Perforce 가 추가된다. 따라서 만약 git bash 나 cmd 창 등을 열어놨다면 닫고 다시 실행시킨다.

2. git difftool 및 git mergetool 설정
- git bash 를 열고 p4merge 실행 : p4merge 가 잘 실행되는지 확인 (안된다면 환경변수의 Path 에 Perforce path 설정 확인)
- $ vi ~/.gitconfig 를 열어서 아래 내용을 추가한다.

[diff]
        tool = p4merge
[difftool]
        prompt = false
[difftool "p4merge"]
        cmd = "p4merge.exe $LOCAL $REMOTE"
[merge]
        tool = p4merge
[mergetool]
        prompt = false
        keepBackup = false
[mergetool "p4merge"]
        cmd = "p4merge.exe $BASE $LOCAL $REMOTE $MERGED"

3. diff 상황과 merge conflict 상황에서 아래 명령어를 수행해본다
- $ git difftool HEAD HEAD^ 
- $ git mergetool

=== 기타 ===
.gitconfig 옵션중에 아래 부분은 입맛에 맞게 변경한다

- prompt = false : 프로그램을 런칭할꺼냐고 물어보지 않고 자동으로 프로그램 실행
- keepBackup = false : conflict 머지시에 .orig (백업파일) 파일을 생성하지 않는다

2013년 5월 14일 화요일 오후 4시 17분 16초 UTC+9, SangHee Kim 님의 말:

SangHee Kim

unread,
May 21, 2013, 1:22:03 PM5/21/13
to git-and-...@googlegroups.com
5월 21일 워크샵에서 어떤분에 의해서 알게 된 사항을 공유합니다. git for windows 의 git bash 에

a. vimdiff 라고 치면 실행이 안되지만 (해당 커맨드가 없다고 나오지만)
b. merge conflict 상황에서 $ git mergetool 혹은 $ git mergetool -t vimdiff 하면 vimdiff 로 resolving merge conflict 를 수행할 수 있습니다.

이점 정정합니다.


2013년 5월 14일 화요일 오후 3시 54분 39초 UTC+9, Brian Moon 님의 말:
git 윈도우 배포 버전에는 vimdiff 포함 안되어 있네요.
Reply all
Reply to author
Forward
0 new messages