[英]i need to check for every commit made in the branch, need list the changed, added & deleted files in Git
我需要在一行中列出分支中所有已更改,已刪除和添加的文件。 稍后將添加和修改添加到一個名為added_or_modified.txt的文件中,並將其添加到deleted.txt中。 有沒有辦法在一行中找到更改,添加和刪除的文件?
(因為你沒有提到你想要區分哪些狀態,我假設最簡單的上下文,與HEAD區分。如果你試圖看到其他給定狀態之間的差異,請隨意將它添加到你的問題中,我會適應我的答案)
我會做一些事情
git diff --name-status
在文件名之前,您將使用符號表示文件狀態的字母:
A added
C changed
D deleted
M modified
R renamed
T changed
U unmerged
X unknown
B broken pairing
見這里關於這些狀態的詳細信息。
對於文件中已刪除的文件列表(其他狀態的原則相同),您可以這樣做
git diff --diff-filter=D > deleted.txt
你的問題標題說你需要檢查每個提交。 在那種情況下,也許你的意思是像git log
。 另一方面,您對輸出的描述聽起來就像您只需要一個文件列表(或稍后兩個)。 這表明git diff
代替了。
git log --name-only --format="" <upstream_branch_name>..<branch_name>
要么
git diff --name-only <upstream_branch_name>..<branch_name>
例如,如果你正在檢查一個名為my_feature
的分支,並想知道每個提交中的更改,因為它與develop
分支分開,你可以說
git log --name-only --format="" develop..my_feature
在這里,我使用了--format=""
這樣你就可以得到一個文件名列表; 如果您為每次提交生成一個列表,您可能希望使用format
選項執行不同的操作。 我提到它是因為,正如所寫的那樣,文件可能會出現多次 - 甚至出現一次,因為提交A
創建了它,並且再次因為提交B
刪除了它。 如果這不可取,並且您只想要與分支關聯的凈更改,請使用diff
而不是log
。
在線下你可以改變它
git log --name-status --format="" develop..my_feature
要么
git diff --name-status develop..my_feature
並處理結果以將刪除分離到它們自己的文件。 請注意,使用--name-status
,git將默認應用重命名檢測。 所以你可能會得到一些像
D file1
A file2
M file3
這是你想要看到的。 以D
開頭的那個被刪除了,所以把它放在刪除列表中; 其他人被添加和修改。 但你也可能會得到一些像
R99 fileX fileY
意味着git認為你已經將fileX
重fileX
為fileY
並在同一次提交中進行了少量修改。 如果你寧願git給你
D fileX
A fileY
這樣你就可以看到單獨出現和消失的路徑,然后添加--no-renames
選項
git diff --name-status --no-renames develop..my_feature
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.