GIT:如何将拆分提交合并到不同的分支

时间:2014-08-03 14:54:07

标签: git version-control merge rebase

我已根据建议in this question使用deadbeef成功拆分了之前的提交git rebase -i deadbeef~1。我在我的development分支上做了这个。

据我所知,一切都很好,deadbeef已经从development的历史中消失,并且已被我在改变时所做的提交所取代。

现在出现两个问题:

  1. 我的历史中有几个deadbeef的分支 - 我如何合并"重新进入那些分支机构?如果我在任何一个分支中做git merge development会怎么样?
  2. deadbeef也被推送到远程存储库,并出现在其他一些克隆上。为了确保deadbeef真的从历史记录中删除,我必须push --force并在所有其他开发计算机上执行新的clone,对吧? (幸运的是,这很容易,我可以访问所有其他克隆)。
  3. 谢谢!

1 个答案:

答案 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