gpt4 book ai didi

git - 我可以在过去的提交中 merge future 的分支,而不 merge 它们之间的共享提交,或者不使用 cherry-pick 吗?

转载 作者:太空狗 更新时间:2023-10-29 14:38:50 25 4
gpt4 key购买 nike

假设我有一个标签,v1.5 .更多的提交和另一个分支 fix创建于标记 v1.5 之前的位置.

现在 fix 中的修复已经完成,它需要应用于由 1.5 标记的提交表示的代码的发布版本.

不使用 git-cherry-pick 是否可行? , merge 来自 fix 的大量提交在历史上的给定时间点?

o  ... (history)
|
o tag v1.5
|
o (can not have in v1.5)
|
o (can not have in v1.5)
|
o (can not have in v1.5)
|\
| \ (`fix` branch)
| \
| o (needed at v1.5)
o | -(can not have in v1.5)
| o (needed at v1.5)
| |
| o (needed at v1.5)
o | -(can not have in v1.5)
o (needed at v1.5)

最佳答案

是的,这可以通过 rebase 而不是 cherry-pick 来实现。无论使用哪种方法,最终结果都应该是相同的。

先为fix分支起个新名字,使原来的fix分支保持不变

git branch fixv1.5 fix

然后将 fixv1.5 rebase 到 v1.5

git rebase --onto v1.5 <upstream> fixv1.5

哪里<upstream>应该是修复分支所基于的提交的 SHA,即下图中标记为 P 的那个。

现在你应该有一个看起来像这样的历史:

o  ... (history)
|
o tag v1.5
| \
| \ A' B' C' D'
| ---o---o---o---o fixv1.5
|
o (can not have in v1.5)
|
o (can not have in v1.5)
|
o (can not have in v1.5) P
|\
| \ (`fix` branch)
| \
| o (needed at v1.5) A
o | -(can not have in v1.5)
| o (needed at v1.5) B
| |
| o (needed at v1.5) C
o | -(can not have in v1.5)
o (needed at v1.5) D

为了完整起见,cherry-pick 的等效用法是

git checkout -b fixv1.5 v1.5
git cherry-pick <upstream>..fix

关于git - 我可以在过去的提交中 merge future 的分支,而不 merge 它们之间的共享提交,或者不使用 cherry-pick 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21313252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com