git git diff

利用git diff 來為版本控制專案找出差異

黃仕元 2019/11/11 14:22:43
25195
前言:

在專案中有時候會遇到需要比對各個版本的差異,又或者是需要提交出異動清單時,不論是同一branch上個版本的比較、或是不同branch的比較,都可以透過git diff 來實現.

基本指令  :

git diff

說明:比對工作目錄與尚未進暫存區(unstaged)全部檔案的差異

git diff --cached

說明:比對工作目錄與尚已進暫存區(staged)全部檔案的差異

git diff <filename>

說明:比對工作目錄與尚未進暫存區(unstaged)檔案<filename>的差異

git diff <commit-id>

說明:比對所在的分支上<commit-id>跟HEAD之間的差異

git diff <old commit-id> <new commit-id>

說明:比對兩個commit-id之間的差異

git diff <branch1> <branch2>
git diff <branch1>..<branch2>

說明:比對兩個分支<branches>之間的差異.(中間加 .. 可避免檔案名稱跟分支名稱重複)

常用補充指令

git diff HEAD^ HEAD // 比較最新版與最新版前一次版本的差異
git diff ---stat // 檢視更新的簡略統計資訊。
git diff --name-only // 在更新的訊息後方顯示更動的檔案列表。
git diff --name-status // 顯示新增、更動、刪除的檔案列表。
git diff --diff-filter= [(A|C|D|M|R|T)…​[*]]] // 配合檔案狀態來篩選顯示檔案列表。
A = Added
C = Copied
M = Modified
R = Renamed
T = Changed
D =Delete

說明:可在git diff 後面可以加的指令,使用上可依據需求來讓差異資料顯示得更清楚

輸出差異

git diff >*.txt

說明:將比對差異輸出成文件txt檔,使用上多配和補充指令輸出差異檔案列表或是檔案差異修改狀態.

git archive --format=zip –output=*.zip HEAD $(git diff --name-only [commit-id] HEAD)

說明:利用git archive 跟git diff 配合將commit-id與HEAD差異的檔案輸出成壓縮檔

結論 :

在專案使用上,git diff可以幫助我們快速檢核差異,或是在私人網路的環境上同步專案的進度上有很大的幫助,

在提交異動資料上也可以更清楚檢視檔案的異動狀態.

 

 

黃仕元