我已根据建议in this question使用deadbeef
成功拆分了之前的提交git rebase -i deadbeef~1
。我在我的development
分支上做了这个。
据我所知,一切都很好,deadbeef
已经从development
的历史中消失,并且已被我在改变时所做的提交所取代。
现在出现两个问题:
deadbeef
的分支 - 我如何合并"重新进入那些分支机构?如果我在任何一个分支中做git merge development
会怎么样?deadbeef
也被推送到远程存储库,并出现在其他一些克隆上。为了确保deadbeef
真的从历史记录中删除,我必须push --force
并在所有其他开发计算机上执行新的clone
,对吧? (幸运的是,这很容易,我可以访问所有其他克隆)。谢谢!
答案 0 :(得分:1)
1)你也必须改变其他分支。最有可能
git checkout other-branch
git rebase development
会做到这一点。
更新:正如我们在评论中所做的那样,你可以做到
git rebase -i development
并从提交列表中删除deadbeef
到rebase。在那之后,其余的提交将干净利落地应用。
1b)还有另一种选择,更多手册。拿一个你要编辑的deadbeef分支,说它是foobar
。创建一个新的tmp
分支,从deadbeef之前的commit开始。然后樱花挑选你将deadbeef分成(从开发)。然后樱桃挑选从deadbeef(不包括)到分支末尾的所有提交(来自foobar
)。检查tmp
是否正确,并将其重命名为foobar
。
2)是的,你必须push -f
并重新创建或重置其他开发机器上的分支。您可能只需要(在其他机器上)
git fetch
git checkout development
git reset --hard origin/development