![](/img/trans.png)
[英]How do I merge two Git branches, with specific commit ids, into one branch?
[英]How do I merge a specific commit from one branch into another in Git?
我有BranchA
,比BranchB
提前113次提交。
但我只想將BranchA
的最后10個提交合並到BranchB
。
有沒有辦法做到這一點?
git cherry-pick <commit>
命令允許您進行單個提交(來自任何分支),並且實質上是在您的工作分支中對其進行rebase。
Pro Git書的第5章比我更好地解釋了它 ,完成了圖表等。 ( 關於重印的章節也很好。)
最后, 在另一個SO問題中,對於挑選與合並與變基有一些好評 。
如果BranchA尚未被推送到遠程,那么您可以使用rebase
重新排序提交,然后簡單地merge
。 在可能的情況下,最好使用merge
over rebase
,因為它不會創建重復的提交。
git checkout BranchA
git rebase -i HEAD~113
... reorder the commits so the 10 you want are first ...
git checkout BranchB
git merge [the 10th commit]
消息來源: https : //git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Integrating-Contributed-Work
將介紹工作從一個分支轉移到另一個分支的另一種方法是挑選它。 Git中的一個櫻桃選擇就像是單一提交的基礎。 它需要在提交中引入的補丁,並嘗試在您當前所在的分支上重新應用它。 如果您在主題分支上有許多提交並且您只想集成其中一個提交,或者如果您只在主題分支上有一個提交,並且您更願意選擇它而不是運行rebase,那么這非常有用。 例如,假設您有一個如下所示的項目:
如果要將提交e43a6提取到主分支中,則可以運行
$ git cherry-pick e43a6
Finished one cherry-pick.
[master]: created a0a41a9: "More friendly message when locking the index fails."
3 files changed, 17 insertions(+), 3 deletions(-)
這引出了e43a6中引入的相同更改,但是您獲得了新的提交SHA-1值,因為應用的日期不同。 現在您的歷史記錄如下:
現在,您可以刪除主題分支並刪除您不想提交的提交。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.