![「git diff」與「diff」相關嗎?](https://rvso.com/image/109224/%E3%80%8Cgit%20diff%E3%80%8D%E8%88%87%E3%80%8Cdiff%E3%80%8D%E7%9B%B8%E9%97%9C%E5%97%8E%EF%BC%9F.png)
git diff
與 相關嗎diff
?
是
git diff
基於diff
?是的命令列語法
git diff
如同的那個diff
?學習其中一項對使用另一項有很大幫助嗎?他們的輸出檔案遵循相同的格式嗎?它們可以同時被
git patch
和使用嗎patch
? (有嗎git patch
?與 有何關係patch
?)
謝謝。
答案1
文件格式是可互通的。 Git 使用最好的格式,diff -u
.它還對其進行了擴展以表示其他類型的更改。
相當於patch
是git apply
.它暫存索引中的變更並將其套用到工作樹。
我記得git apply
比 更嚴格patch
,儘管參考文件似乎沒有明確的比較。它確實提到了幾個可以啟用或停用的測試/錯誤。
參考文件還建議它可以用作“GNU 補丁的替代品”——即使在 git 存儲庫之外,如果您使用某個選項的話。
答案2
git-diff 提供了比 diff 更多的功能,我不認為輸出補丁是可互通的(沒有一些附加選項),因為 diff 會產生類似的行
diff -ruNa dir1/file1.txt dir2/file1.txt
而 git-diff 會產生類似這樣的行
diff --git a/dir1/file1.txt b/dir2/file1.txt
(注意來源和目標前綴,可使用--no-prefix
和不同選項切換)
以下是 git-diff 的一些附加功能:
可以記錄移動/重命名的文件,同時差異不能
使用遞歸模式、統一差異並預設處理新檔案/已刪除檔案 (
diff -ruN
)支援不同的演算法來找出差異
支援 git 二進位補丁,將二進位資料編碼為 ASCII