簡體   English   中英

如何在Git中將特定提交從一個分支合並到另一個分支?

[英]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.

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