Git 配置merge工具

2021-07-10 05:24:00 字數 2245 閱讀 5443

git merge的常用工具有kdiff3和p4merge。

下面就windows系統和os x系統分別說明如果配置這兩種工具。

1、建立乙個merge包裝指令碼,名字叫作extmerge,讓它帶引數呼叫p4merge二進位制檔案

$ sudo vim /usr/local/bin/extmerge
內容為

#!/bin/sh
2、接著建立diff包裝指令碼

$ sudo vim /usr/local/bin/extdiff
內容為

#!/bin/sh

[ $#

-eq7 ] && /usr/local/bin/extmerge "$2"

"$5"

3、確認這兩個指令碼是可執行的

$ sudo chmod +x /usr/local/bin/extmerge

$ sudo chmod +x /usr/local/bin/extdiff

4、配置~/.gitconfig

$ git config --global merge.tool extmerge

$ git config --global mergetool.extmerge.cmd \

'extmerge "$base"

"$local"

"$remote"

"$merged"'

$ git config --global mergetool.trustexitcode false

$ git config --global diff.external extdiff

或者直接編輯~/.gitconfig檔案如下

[merge]

tool = extmerge

[mergetool "extmerge"]

cmd = extmerge "$base"

"$local"

"$remote"

"$merged"

trustexitcode = false

[diff]

external = extdiff

如果想替換kdiff3作為預設的merge工具,則修改extmerge指令碼,把p4merge替換成kdiff3

$ sudo vim /usr/local/bin/extmerge
內容為

#!/bin/sh
5、配置好了之後就可以通過命令列呼叫工具了。以diff為例

▼乙個乙個的diff

git diff

git difftool

▼一起diff(kdiff3可以,p4merge不可以)

git difftool --dir-diff

git difftool -d

git config --global diff.tool p4merge

git config --global difftool.p4merge.cmd "'d:\program files\perforce\p4merge.exe' $local

$remote"

git config --global merge.tool p4merge

git config --global mergetool.p4merge.cmd "'d:\program files\perforce\p4merge.exe' $pwd/$base

$pwd/$remote

$pwd/$local

$pwd/$merged"

git config --global mergetool.p4merge.trustexitcode false

git config --global mergetool.keepbackup false

同樣,如果想要以kdiff3作為預設的merge工具,可以新增

difftool.kdiff3.cmd

mergetool.kdiff3.cmd

mergetool.kdiff3.trustexitcode false

並把

diff.tool

merge.tool

替換為kdiff3

git 撤銷所有 merge

無意間切換到了乙個別人的分支並且merge了 git merge 看到大量的 在合併,我覺得還是把這個分支回滾比較好.git status 位於分支 您的分支領先 origin 共 218 個提交。使用 git push 來發布您的本地提交 200多的個提交說明這個分支閒置很久了,為避免挨打 萬一是...

git 處理merge衝突

目錄兩處的 git合併,需要解決產生的衝突,我現在初步接觸merge的問題,暫且這樣記錄。保留原來的改動,先將遠端 pull下來然後應用原來的改動git stash git pull git stash pop 不保留原來的改動,直接回退到上一版本再pullgit reset hard git pu...

Git如何撤銷merge操作

方法一,reset 到 merge 前的版本,然後再重做接下來的操作,要求每個合作者都曉得怎麼將本地的 head 都回滾回去 git checkout 行merge操作時所在的分支 git reset hard merge前的版本號 方法二,當 merge 以後還有別的操作和改動時,git 正好也有...