Tips/GIT

Windows Git (msysGit)에서 diff / mergetool 설정하기

dextto™ 2012. 2. 24. 11:14

출처: http://www.davesquared.net/2009/02/setting-up-diff-and-merge-tools-for-git.html

 

diff / merge 툴 설치

원하는 diff/merge tool을 설치합니다. 여기서는 DiffMerge를 사용했습니다.

DiffMerge.exe는 http://www.sourcegear.com/diffmerge/ 에서 구할수 있습니다.

프로그램 설치 경로는 알아서 하시면 됩니다.

 

원문대로 하면 공백문자를 인식하지 못하므로, 
git-diff-wrapper.sh를 읽기 위해 
환경변수의 PATH에 C:\Program Files\Git\cmd 경로를 추가하도록 합시다.

(참고. Git 바로가기 설정: C:\WINDOWS\system32\cmd.exe /c ""C:\Program Files\Git\bin\sh.exe" --login -i")

 

diff 툴 설정

C:\Program Files\Git\cmd 폴더에 git-diff-wrapper.sh 파일을 만들고 다음 내용을 적습니다.

 

#!/bin/sh

# diff is called by git with 7 parameters:
#  path old-file old-hex old-mode new-file new-hex new-mode
"C:/Program Files/SourceGear/DiffMerge/DiffMerge.exe" "$2" "$5" | cat

 

#"C:/Program Files/WinMerge/WinMergeU.exe" "$2" "$5" | cat

#"C:/Program Files/KDiff3/kdiff3.exe" "$2" "$5" | cat

 

그 다음 git 환경을 다음과 같이 설정합니다.

여기에서는 C:\Documents and Settings\Administrator\.gitconfig 파일을 직접 수정합니다.

 

[diff]
external = git-diff-wrapper.sh

 이제 diff를 확인하기 위해 git diff 를 실행해 봅니다.

 

mergetool 툴 설정

마찬가지로 C:\Program Files\Git\cmd 폴더에 git-merge-diffmerge-wrapper.sh 파일을 만들고 다음 내용을 적습니다.

 

#!/bin/sh

# Passing the following parameters to mergetool:
#  local base remote merge_result

"C:/Program Files/SourceGear/DiffMerge/DiffMerge.exe" "$1" "$2" "$3" --result="$4" --title1="Mine" --title2="Merging to: $4" --title3="Theirs"

그 다음 git 환경을 다음과 같이 설정합니다.

여기에서는 C:\Documents and Settings\Administrator\.gitconfig 파일을 직접 수정한다.

 

[merge]
    tool = diffmerge

[mergetool "diffmerge"]
cmd = git-merge-diffmerge-wrapper.sh "$PWD/$LOCAL" "$PWD/$BASE" "$PWD/$REMOTE" "$PWD/$MERGED" 
    trustExitCode = false
keepBackup = false

[mergetool "kdiff3"]
    path = C:/Program Files/KDiff3/kdiff3.exe
    keepBackup = false
    trustExitCode = false

이제 git mergetool 을 실행해 봅니다.

잘 되죠? :)

 

혹시나 실행해도 아무 반응이 없으신 분들은 log를 보시고

git diff 18f822e 와 같이 실행해 보시거나

CONFLICT를 일으킨 상태에서 해 보세요

반응형