[英]How to copy commits from one branch to another
我有兩個我正在努力的功能
共享 - 提交 - A - B - C Feat1
共享 - 提交 - D - E - F Feat2
問題是,為了測試Feat2我也確實需要Feat1,但我仍然希望它們作為單獨的分支,因為它們是不同的。 有什么好方法可以對Feat2進行更改,然后快速創建第三個分支,這兩個分支都在一起,不需要我每次都要銷毀它。
共享 - 提交 - Feat1 - Feat2
我在做的是
git checkout feat2 git branch -b combo git rebase -i feat1
但是當我對feat2進行更新時,我不知道如何合並這些新的更改。
這里基本上有兩種選擇。
feat2
上的新提交復制到combo
。 要在feat2
上選擇新的提交到combo
,請運行以下命令:
git checkout combo
git cherry-pick <new commit> <new commit> <new commit>
或者,您可以合並而不是重新定位。 例如,要創建組合:
git checkout -b combo feat1
git merge feat2
然后,從feat2
“合並新的變化”,只是......
git merge feat2
同樣,要在feat1
上合並新的提交:
git merge feat1
您可以合並而不是rebase。 由於您的組合分支僅用於測試,因此您不必擔心歷史記錄有點混亂。
那是:
git checkout feat2
git branch -b combo
git merge feat1
稍后,當您更新feat2時:
git checkout combo
git merge feat2
每當您對feat1或feat2進行更新時,請將其合並到組合中。
缺點是你必須合並兩個分支中的所有提交。 如果您不想要更改,則必須單獨提交以刪除組合分支中的更改。
您可以將附加提交從feat2重新綁定到組合。
假設您在feat2上添加了一些提交,然后將這些提交移動到組合:
git rebase --onto combo lastcommittoexcludeonfeat2 feat2
或者,在對feat2進行更改之前,添加分支或標記,例如:
git checkout -b lastfeat2rebase
git checkout feat2
git commit ... # more commits here to feat2
git rebase --onto combo lastfeat2rebase feat2
請注意,一旦使用了rebase選項,就不能再使用merge選項了。 如果使用合並選項,則可以稍后決定使用rebase選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.