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▼一起diff(kdiff3可以,p4merge不可以)git difftool
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 正好也有...