難免有時候會需要確認幾次簽入中異動了哪些檔案,操作上可以透過 Sourcetree 去點每個 commit,
但就是慢了點;另外,若是不幸的需要交付異動的相關檔案(含新增修改),若此次調整有多個 簽入,
那可能的作法可以先 combind to one commit,這次紀錄,先不將commit 合併情境下,透過指令來
檢視清單...
前面有提到因為是不先合併commit 的方式操作,以下是針對兩個檔案 cat.txt、dog.txt 來操作,並且
保持原紀錄,如下所示
那要針對某次 commit 或某兩個 commit 之間所異動的檔案列表,可以使用如下語法
git diff-tree -r --no-commit-id --name-only --diff-filter=ACDMRT HEAD
git diff-tree -r --no-commit-id --name-only --diff-filter=ACDMRT cb68330
git diff-tree -r --no-commit-id --name-only --diff-filter=ACDMRT cb68330 708ce90
先看結果
說明指令 git diff-tree -r --no-commit-id --name-only --diff-filter=ACDMRT cb68330 708ce90
透過 diff-tree 來比對 commit 差異
搭配 -r :會將指目錄、子目錄及檔案列出
搭配 –on-commit-id :不列出 commit id
搭配 –name-only:僅檔案名稱,不含其他修改狀況或其他,若是不寫會是如下顯示
搭配 --diff-filter=[(A|C|D|M|R|T|U|X|B)…[*]]]:過濾出相對的狀態檔案,其中狀態有如下所示,參考官網
A - Added、C - Copied、D - Deleted、M - Modified、R - Renamed、T - have their type (mode) changed
U - Unmerged、X - Unknown、B - have had their pairing Broken、* - All-or-none
亦可使用 git diff-tree --pretty="" -r --name-only --diff-filter=ACDMRT cb68330 708ce90
若有輸出清單到外部檔案的需求可使用以下語法
git diff-tree -r --no-commit-id --name-only --diff-filter=ACDMRT e9a1edd HEAD > D:\temp\files.txt
查看輸出檔案
若還想要輸出同時要在畫面上呈現,可使「&&」 串接讀取檔案指令「cat」
[ 2022/12/22 ] 更新
若要將輸出結果直接複製到剪貼簿,方便後續 ctrl+v 貼上,可搭配「 | clip」語法
git diff-tree -r --no-commit-id --name-only --diff-filter=ACDMRT e9a1edd HEAD | clip
參考:
沒有留言:
張貼留言