1. 程式人生 > >Git - 使用命令和P4Merge進行diff

Git - 使用命令和P4Merge進行diff

fft conf commit ref 情況下 為我 引用 分享 program

P4Merge

P4Merge是Git的一個第三發Diff和Merge工具(可視化沖突解決工具).

下載地址: https://www.perforce.com/downloads/visual-merge-tool

安裝的時候只需要勾選p4merge即可:

技術分享圖片

然後需要把p4merge的路徑添加到環境變量PATH裏面.

這樣操作後, 就可以通過命令行啟動p4merge了:

技術分享圖片

配置p4merge作為Git的diff tool:

git config --global diff.tool p4merge
git config --global difftool.p4merge.path "C:\Program Files\Perforce\p4merge.exe"

因為每次使用diff tool的時候, git會彈出確認框, 我們最好把這個確認框從全局範圍內默認不啟用:

git config --global difftool.prompt false

配置p4merge作為git的merge tool:

git config --global merge.tool p4merge
git config --global mergetool.p4merge.path "C:\Program Files\Perforce\p4merge.exe"
git config --global mergetool.prompt false

最後檢查一下全局配置:

git config --global --list

技術分享圖片

OK.

下面準備一個項目, 現在的項目狀態是:

技術分享圖片

添加一個README.md, 然後add並commit.

然後修改README.md 然後add

然後再修改README.md:

技術分享圖片

git status告訴我這個文件被修改了, 但是沒有告訴我哪裏被修改了.

為了知道更多的細節, 這裏就需要使用 git diff命令了.

不加任何參數的情況下, 該命令

比較的是working directory裏面, 被stage的變化 vs 沒被stage的變化:

技術分享圖片

如果變化太多了顯示不下, 想要退出的話, 就按q就行.

因為我配置了git difftool, 所以也可以使用 git difftool這個命令:

技術分享圖片

這就會彈出p4merge這個可視化工具, 可以清楚的看到變化.

左邊的是stage的, 右邊的是沒有stage的.

比較working directory和最後一次commit:

git diff HEAD.

技術分享圖片

下面使用可視化的difftool: git difftool HEAD.

技術分享圖片

比較Staging 區和最後一次commit.

git diff --staged HEAD.

技術分享圖片

使用可視化工具: git difftool --staged HEAD:

技術分享圖片

只比較一個文件/路徑.

再修改項目的另一個文件, 然後查看狀態:

技術分享圖片

如果執行git diff的話, 那麽兩個文件都會被比較:

技術分享圖片

只想比較一個文件/路徑的話就需要加參數:

git diff -- README.md:

技術分享圖片

也可以使用可視化工具:

git difftool -- README.md:

技術分享圖片

比較兩個commit.

先查看歷史: git log --oneline:

技術分享圖片

git diff xxx yyy

其中xxx和yyy都表示commit的 id, 最後一次commit可以用HEAD表示.

技術分享圖片

下面這個命令比較的是HEAD 和 HEAD的上一次:

git diff HEAD HEAD^.(這個命令在windows上可能有點問題, 請使用git bash):

技術分享圖片

使用可視化工具:

git difftool HEAD HEAD^:

技術分享圖片

HEAD^表示上一次commit, HEAD^^就表示上兩次的commit, 以此類推, 也可以使用HEAD~2的形式, 它和HEAD^^是一樣的. 也可以連著使用 HEAD^^~3就像當於HEAD^^^^^.

本地 vs 遠程.

git diff master origin/master. (origin是遠程github的引用名而已, 這個可以改.) 這就是比較本地和遠程的master分支.

技術分享圖片

同樣也可以使用可視化工具: git difftool master origin/master:

技術分享圖片

最後git push origin master.

本文就簡單介紹了這些: p4merge, difftool, mergetool, git diff, git difftool, 各種情況的git diff.

Git - 使用命令和P4Merge進行diff