我们在某个分支中遇到了一些问题,这些问题在过去以某种方式搞砸了......以下情况:
D D1-D2-D3-o \ \___________ \ \ M \-M1-M2-D2-F2-M3-D3-o \ / \ / F \-F1-F2-F3-o
现在我们再次尝试使用M来修改F,但最终我们用M3恢复的更改F2。
D D1-D2-D3-o \ \___________ \ \ M \-M1-M2-D2-F2-M3-D3-o \ \ F \-F1-F3-o
在分支F中,我们只使用:
{{1}}
有没有解释为什么将F2-F2-F3重新定位到F2-M3会松动F2?
似乎工作的是将F中的所有更改压缩到单个提交然后执行rebase,在这种情况下,F2中引入的更改仍然存在。
我尝试使用rebase交互模式重写M的历史并保留合并...我的想法是删除意外提交(F2)和它的恢复(M3),但结果并没有让我有信心,我没有放松任何东西。
我也遇到了以下内容(在这里提到的错误:https://git-scm.com/docs/git-rebase),这让我放弃了重写大师历史的想法。
--preserve-merges --interactive提供的待办事项列表没有 表示修订图的拓扑。编辑提交和 重写他们的提交消息应该工作正常,但尝试 重新提交提交往往会产生违反直觉的结果。
答案 0 :(得分:2)
我猜我F2
M
F2
F
F
M
上的F2
,而不是图表所示的合并。
当重新定位时,git会挑选git rebase
但不在git rebase --onto M $(git merge-base F M) F
# equivalent to:
# git rebase --onto M D1 F
中的所有提交,因为F
在两个分支中都没有选择它。
如果你想保留它,解决方案是使用M
:
F
这将重新定位D1
中的所有提交,但不会改为F1-F2-F3
和M
(git rebase --interactive M F
)==>的共同祖先。 pick F2
,pick F1
pick F2
pick F3
另一种解决方案是进行交互式变基(tf.estimator.Estimator
),然后在rebase-todo中明确添加element.attribute("attribute name")
:
element.get_attribute("attribute name")