【发布时间】:2019-03-30 18:39:51
【问题描述】:
为了开发一个特性,我创建了一个特性分支(称为feature/a)。
在feature/a的开发过程中,我发现存在一个bug,所以我从master创建了一个bug分支(称为fix/b)。
修复此错误并提交后,我再次检查了feature/a,然后运行git rebase origin/master。但是因为它依赖于fix/b,所以我跑了git rebase origin/fix/b。在这两次变基期间,我修复了一些冲突。
然后我继续工作feature/a,在我完成feature/a 之后,就在我请求拉取请求之前,我意识到有很多重复的提交。为什么有很多重复的提交?我认为这可能是因为我从混合来源重新调整了基础,但我试图在本地复制但没有发生。
另一个问题,在这种情况下,什么是正确的策略?有人有什么想法吗?
更新 #1
对不起,我忘了提,当时fix/b 还没有合并回master。所以情况更像是下面这样:
master --> m1 --> m2
|\
| \
| feature/a --> a1 --> a2
|
fix/b --> b1 --> b2
假设我在a2feature/a,理想情况下我预计会发生以下情况:
* git rebase master,图表应变为:
--> m1 --> m2 --> a1 --> a2
* git rebase fix/b,图表应变为:
--> m1 --> m2 --> b1 --> b2 --> a1 --> a2
但是,在我的情况下,图表更像下图: --> m1 --> m2 --> b1 --> b2 --> m1 --> m2 --> b1 --> b2 --> a1 --> a2
我无法在我的本地 git 存储库中重现。
我的问题实际上是:如果有两个分支(A 和 B),它们都没有合并到 master,并且一个依赖于另一个(branch A 依赖于 branch B)。在这种情况下,要继续开发branch A,我应该从master 和branch B 变基吗?
【问题讨论】:
-
你应该不运行
git rebase origin/fix/b。假设您实际上确实将错误修复直接提交给master,那么git rebase origin/master应该将该错误修复提交给feature/a。我认为这是您问题的根源。 -
对不起,我忘了说,在我修复
fix/b之后,我请求拉取请求,但是需要时间合并回master,这意味着此时fix/b没有合并回master还没有。 -
这并没有真正改变我的评论。我认为你不应该重新定位两次。
标签: git