簡體   English   中英

自從在git中創建分支以來如何獲取已更改文件的列表

[英]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 * :“ masterdev在歷史上首先加入哪里,從devmaster的技巧開始並向后工作?”

為了找到這個,你可以向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.

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