【发布时间】:2020-09-04 07:31:59
【问题描述】:
我有一个分支A,在其中我做了一些更改a,然后我从A创建了一个新的分支B继续进行一些更改b,这样总的变化在B 中是a, b。最后,其他人将他们的更改 c 合并到 master 中,因此工作树现在如下所示:
- c (master)
\
- a (A) - b (B)
然后我将A 重新定位为master,将更改从a 更改为a' 并强制将它们推送到分支A,因此工作树如下所示:
- c (master) - a' (A)
\
- a - b (B)
问题
我怎样才能将B 变基为A,这样只有新的更改b 会被更改,然后工作树看起来像这样:
- c (master) - a' (A) - b' (B)
如果我在B 上尝试git rebase origin/A,那么它会尝试解决提交a 与c, a',这是我不想要的,因为我担心它会创建一个新的提交@987654343 @ 然后工作树将如下所示:
- c (master) - a' (A) - a'' - b' (B)
现在有没有办法只改变b? (我曾尝试用谷歌搜索这个,但我没有找到任何具体涵盖此案例的内容)
编辑:
我尝试在B 上压缩a' 和b,但情况更糟,因为现在b 的所有更改都被注册为冲突。为了说明,假设我:
- 在
a中添加了新行l1。 - 在
b中将该行更改为l2。 - 在另一个提交
c中未触及此行。 - 现在是冲突了,因为
l1是在a'中添加的,但l2是在被撤销的提交a'&b中添加的。
【问题讨论】:
标签: git branch rebase branching-and-merging