Git:如何在他们的策略中使用rebase

时间:2011-05-22 14:11:00

标签: git rebase

基本上,我只想(重新)设置一个特定提交(commit A)的父级(比如提交B),这是某个分支{{1}的根提交。 }。在我通过移植物做出的一个答案中建议here。我稍后会尝试,也许这是更好的方式。

然而,在阅读本文之前,我认为这应该可以通过x来实现。但是因为父提交rebaseA有所不同,我只想保持整个分支B的方式,只需将父设置为其根提交{{1我想我可能会使用x策略 - 这似乎不存在。我之前偶然发现了(并认为这是一个错误或我的Git安装)并且总是通过切换分支和使用B策略来解决这个问题。但是,对于theirs,在这种情况下我被迫使用ours策略。

我的命令如下:

rebase

2 个答案:

答案 0 :(得分:2)

rebase不是为你想做的而设计的。另一张海报是正确的;你想要做的是设置一个移植来将B附加到A,然后运行git filter-branch将其烘焙到提交中。可以在git filter-branch manpage中找到此确切用例的示例。

答案 1 :(得分:0)

我不完全确定我理解你的问题,但如果你的目标是从这个开始:

o C (X)
|
o B

o A

到此:

o C' (X)
|
o B'
|
o A

然后git replace --graft B A应该做你想做的事。

N.B。 BB'具有相同的文件树,但是不同的提交哈希,因为它们的父提交是不同的。同样地CC'

为什么必须通过git replace --graft而不是git rebase -s theirs完成此操作,我不知道。大概是hysterical raisins

另请参阅:this answerHow do git grafts and replace differ? (Are grafts now deprecated?)