為 Git 設定 SourceGear DiffMerge 工具
本文將討論配置 Git 以使用 SourceGear 的 DiffMerge
作為預設 difftool
。與 Git 的預設 difftool
相比,此工具使我們能夠通過改進的視覺效果輕鬆理解合併衝突。
它是 3 路合併的理想工具,因為它支援 3 路檔案比較。
我們可以檢視檔案的先前狀態、當前狀態以及合併後的結果。你必須從 SourceGear 的官方網站下載並安裝 DiffMerge
。
在 Windows 上設定 DiffMerge
要將 Git 設定為預設使用 DiffMerge
工具,請將其新增到你的 .gitconfig
檔案中。
[diff]
tool = DiffMerge
[difftool "DiffMerge"]
cmd = 'C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe' "$LOCAL" "$REMOTE"
[merge]
tool = DiffMerge
[mergetool "DiffMerge"]
cmd = 'C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe' -merge -result="$PWD/$MERGED" "$PWD/$LOCAL" "$PWD/$BASE" "$PWD/$REMOTE"
trustExitCode = true
[mergetool]
keepBackup = false
對於比較引數引數,我們有:
$LOCAL
,這是原始檔案。$REMOTE
,即修改後的檔案。
你可以在 Git Bash 上執行 git difftool
和 git mergetool
命令來開啟 DiffMerge
。
或者,你可以在命令提示符下執行以下命令來更新 .gitconfig
檔案。
C:\> git config --global diff.tool diffmerge
C:\> git config --global difftool.diffmerge.cmd
"C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe
\"$LOCAL\" \"$REMOTE\""
C:\> git config --global merge.tool diffmerge
C:\> git config --global mergetool.diffmerge.trustExitCode true
C:\> git config --global mergetool.diffmerge.cmd
"C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe
-merge -result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\""
在 Mac OS 上設定 DiffMerge
在 Mac OS 上配置 Git 以使用 DiffMerge
的過程可能是最簡單的。確保你有下面的目錄。
/usr/local/bin/diffmerge
執行以下命令來更新你的 .gitconfig
檔案並進行測試。
git config --global merge.tool diffmerge
git config --global mergetool.diffmerge.cmd "/usr/local/bin/diffmerge --merge --result=\"\$MERGED\" \"\$LOCAL\" \"\$BASE\" \"\$REMOTE\""
git config --global mergetool.diffmerge.trustExitCode true
git config --global mergetool.keepBackup false
git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd "/usr/local/bin/diffmerge --nosplash \"\$LOCAL\" \"\$REMOTE\""
我們可以執行 git config --global -e
命令來檢查我們的 .gitconfig
檔案。它應該看起來像這樣:
[diff]
tool = diffmerge
[merge]
tool = diffmerge
...
[mergetool "diffmerge"]
cmd = /usr/local/bin/diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"
trustExitCode = true
[mergetool]
keepBackup = false
[difftool "diffmerge"]
cmd = /usr/local/bin/diffmerge --nosplash \"$LOCAL\" \"$REMOTE\"
在 Ubuntu 上設定 DiffMerge
在 Ubuntu 上進行配置與 Mac OS 非常相似。我們將使用相同的命令,但更改安裝位置。
以下是命令。
git config --global merge.tool diffmerge
git config --global mergetool.diffmerge.cmd "/usr/bin/diffmerge --merge --result=\"\$MERGED\" \"\$LOCAL\" \"\$BASE\" \"\$REMOTE\""
git config --global mergetool.diffmerge.trustExitCode true
git config --global mergetool.keepBackup false
git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd "/usr/bin/diffmerge --nosplash \"\$LOCAL\" \"\$REMOTE\""
差不多就是這樣。我們現在可以執行下面的命令來測試它。
$ git mergetool
$ git difftool
總而言之,如果你想配置 Git 以使用 SourceGear 的 DiffMerge
工具,你需要根據你的作業系統使用列出的命令更新你的 .gitconfig
檔案。
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn