![](/img/trans.png)
[英]How do I get the list of changed and added files since the creation of a branch in git by a specific author?
[英]How to get the list of changed files since the creation of a branch in git
假設我創建了一個分支dev
,然后進行了5次提交,更改的文件總數為5。
自創建分支以來,是否可以運行任何命令以僅查看更改的文件列表?
分支不會保留“創建”信息,因此您無法讓git完全自動地且一般地做到這一點。 但是,如果您知道有5個“有趣的”提交:
A <- B <- C <- D <- E <- dev
/
... <- * <- o <- ... <-- master
並且您想比較提交E
(分支dev
的尖端)與提交*
,即提交A
之前的提交:
$ git diff dev~5 dev
將為您顯示兩者的完全區別。 在~5
符號的意思是“計數回5個父母”:在開始E
,退一步一至D
,退一步一個C
等; 如果您執行了五次操作,則會到達標記為*
的提交。
diff向您顯示了這兩次提交之間的區別。 默認情況下,它將顯示所有內容,但是如果您想查看更改(或添加或刪除等)文件的名稱,可以添加--name-only
。
通常,執行此操作的更好方法是,不在乎創建分支dev
時間,而只在意dev
和其他分支(例如master
) 聯接的位置 。 例如,在這種情況下,您可能想問以下問題來定位commit *
:“ master
和dev
在歷史上首先加入哪里,從dev
和master
的技巧開始並向后工作?”
為了找到這個,你可以向git詢問兩個分支的“合並基礎”:
$ git merge-base dev master
這將產生合並基礎的原始提交ID(圖中的commit *
)。 然后,您可以將其提供給git diff
(使用--name-only
,-- --name-status
,-- --stat
或任何您喜歡的名稱):
$ git diff --name-status $(git merge-base dev master) dev
這很常見, git diff
重新使用了特殊的master...dev
語法(有關詳細信息,請參見gitrevisions
):
$ git diff --name-status master...dev
這里的三點語法告訴git diff
查找merge-base,並產生它與右邊標識的提交之間的差異:分支dev
的尖端。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.