Windows 에서 difftool 및 mergetool 을 p4merge 로 설정하기 (git bash 예)

507 views
Skip to first unread message

SangHee Kim

unread,
May 14, 2013, 6:23:06 AM5/14/13
to git-and-...@googlegroups.com
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 (백업파일) 파일을 생성하지 않는다

더불어 위 .gitconfig 설정을 보면 다른 difftool 이나 mergetool 들도 어떻게 설정이 가능한지를 알 수 있습니다. 단, git 에서 지원하는 툴을 사용해야 적은 설정으로 사용을 할 수 있습니다.

SangHee Kim

unread,
May 21, 2013, 1:19:57 PM5/21/13
to git-and-...@googlegroups.com
오늘 5월 21일 워크샵에서 어떤분이 vimdiff 가 윈도우에서 되는 것을 보여주셨습니다. 정리하자면 아래와 같습니다.

a. 리눅스와 달리 윈도우 git bash 에서는 콘솔에서 vimdiff 를 치면 vimdiff 가 없다고 나오지만 (해당 프로그램이 없는 것처럼 보이지만)
b. merge conflict 시에 $ git mergetool 을 실행하면 혹은 $ git mergetool -t vimdiff 를 실행하면 vimdiff 를 이용한 resolving merge conflict 를 진행할 수 있다.

이점 착오 없으시기를 바랍니다. 

2013년 5월 14일 화요일 오후 7시 23분 6초 UTC+9, SangHee Kim 님의 말:
Reply all
Reply to author
Forward
0 new messages