簡體   English   中英

任何人都可以解釋一下git cherry-pick <sha> 呢?

[英]Can anyone explain what git cherry-pick <sha> does?

正如我在這里所關注的那樣,我在另一個本地分支中有舊提交[包含abc.cpp,def.cpp]。

幾個月后我想要使用這些更改,但在我目前的分支中,abc.cpp已升級。 那么如果我挑選那么它會將舊的abc.cpp的變化整合到新的abc.cpp [最近的工作目錄副本]中嗎?

git-cherry-pick(1)手冊頁說:

給定一個或多個現有提交,應用每個引入的更改,為每個提交記錄一個新提交。 這需要您的工作樹是干凈的(沒有HEAD提交的修改)。

簡單來說,這意味着git cherry-pick將提交從一個分支應用到另一個分支,但不會以正確合並的方式保留原始歷史或來自其他分支的祖先。

將其視為應用一系列選定的補丁,而不是兩個歷史分支的完全合並。 顯然,如果你傾向於進行非常小的原子提交,那么采摘櫻桃就像應用一個寫得很好的補丁一樣。 但是,由於您沒有像使用merge或rebase那樣擁有共同祖先,如果您的提交不小且孤立,則可能會有更多沖突需要解決。

挑選櫻桃是一個好主意,在很大程度上取決於你如何構建你的提交。 如果它不適合你,你總是可以用git format-patchgit apply手動完成。

是的,這就是它的作用。 cherry-pick正在應用提交(或其中的一系列)作為您的分支的補丁(好吧, 幾乎作為補丁 )。

您可能會遇到沖突(例如合並分支時),因為您的分支上發生了獨立修改。

請注意,使用git1.8.5 / 1.9(2013年第4季度) ,git cherry-pick現在可以輕松選擇“來自上一個分支”:

就像“ git checkout - ”知道簽出和“ git merge - ”知道合並你以前的分支,“ git cherry-pick ”現在理解“ git cherry-pick - ”從前一個分支中選擇。

參見Hiroshige Umino(yaotti) 提交的182d7d

cherry-pick :允許“ - ”縮寫為“ @{-1}

- ”縮寫對於像“ checkout ”和“ merge ”這樣的“ cherry-pick ”很方便。

對於一致性而言,“ - ”代表前一個分支的名稱,其中分支名稱被接受,並且它不能表示任何其他東西,如stdin

暫無
暫無

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

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