簡體   English   中英

如何在某個目錄上“git diff”?

[英]How do I 'git diff' on a certain directory?

git diff實際上在所有源代碼上運行一個差異。 如何在某個目錄上執行此操作,以便我可以查看對其下文件的修改?

提供路徑(本例中為 myfolder)並運行:

git diff myfolder/

如果要比較不同的分支,則需要使用--將 Git 修訂版與文件系統路徑分開。 例如,有兩個本地分支masterbryan-working

$ git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/

或者從本地分支到遠程:

$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/

您不僅可以添加路徑,還可以添加git diff --relative以獲取相對於該文件夾的結果。

git -C a/folder diff --relative

在 Git 2.28(2020 年第三季度)中,“ diff ”系列中的命令學會了尊重“ diff.relative ”配置變量。

提交c28ded8通過(2020 5月22日)洛朗·阿諾德·( spk
(由Junio C gitster合並-- gitster --提交 e34df9a 中,2020 年 6 月 2 日)

diff : 添加配置選項relative

簽字人:Laurent Arnoud
確認者:Đoàn Trần Công Danh

diff.relative布爾選項設置為true僅顯示由relative選項的path參數指定的當前目錄/值的更改,並顯示相對於上述目錄的路徑名。

--no-relative覆蓋之前的--relative

添加 git-format-patch(1) 選項文檔--relative--no-relative

文檔現在包括

diff.relative :

如果設置為 ' true ',' git diff ' 不會顯示目錄外的更改並顯示相對於當前目錄的路徑名。


警告:在 Git 2.34(2021 年第四季度)之前,當存在未合並的路徑時,“ git diff --relativeman )會出現段錯誤和/或產生錯誤的結果。

請參閱Đoàn Trần Công Danh ( sgn ) 的提交 8174627 (2021 年 8 月 22 日
(由Junio C gitster合並gitster提交 c8f4916 中,2021 年 9 月 8 日)

diff-lib :如果 --relative 詢問,則忽略 $cwd 之外的路徑

報道者:Thomas De Zeeuw
測試者:Carlo Arenas
簽字人:Đoàn Trần Công Danh

對於 diff 系列命令,如果請求--relative ,我們可以告訴它們排除某些目錄之外的更改。

diff_unmerge() ,如果請求的路徑在感興趣的目錄之外,則將返回NULL ,因此在嘗試取消引用其返回值時,我們將在run_diff_files遇到NULL指針取消引用。

diff_unmerge在取消引用之前檢查diff_unmerge返回值是不夠的。
因為,差異引擎稍后將嘗試處理此類路徑規范。

讓我們不要對那些不感興趣的條目運行 diff,而是。
作為副作用,通過這樣跳過,我們可以節省一些 CPU 周期。

我要找的是這個:

git diff <ref1>..<ref2> <dirname>

在 Git 中添加Beyond Compare作為 difftool 並為 diffdir 添加別名:

git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"

獲取 gitdiff 為:

git diffdir 4bc7ba80edf6  7f566710c7

參考:使用git difftool + Beyond Compare 比較整個目錄

您應該養成查看此類文檔的習慣。 這是非常有用的,會很快提高你的技能。 當您執行git help diff時,這是相關的部分

   git diff [options] [--no-index] [--] <path> <path>

兩個<path>是您需要更改為相關目錄的內容。

要將Beyond Compare用作目錄差異的差異工具,請記住啟用如下符號鏈接:

文件夾比較視圖規則(裁判圖標):

在此處輸入圖片說明

然后,啟用跟隨符號鏈接並更新會話默認值:

在此處輸入圖片說明


或者,

像這樣設置別名:

git config --global alias.diffdir "difftool --dir-diff --tool=bc3 --no-prompt --no-symlinks"

請注意,在任何一種情況下,對引用當前工作樹的一側(左側或右側)所做的任何編輯都將保留。

如果要排除子目錄,可以使用

git diff <ref1>..<ref2> -- $(git diff <ref1>..<ref2> --name-only | grep -v /)

如果您安裝並配置了 diff 工具(例如: kdiff3

git difftool -d  branch1 branch2 /path/to/dir/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM