git
git diff
利用git diff 來為版本控制專案找出差異
2019/11/11 14:22:43
3
26132
前言:
在專案中有時候會遇到需要比對各個版本的差異,又或者是需要提交出異動清單時,不論是同一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可以幫助我們快速檢核差異,或是在私人網路的環境上同步專案的進度上有很大的幫助,
在提交異動資料上也可以更清楚檢視檔案的異動狀態.