如何将旧提交移动到git中的另一个分支?

时间:2017-03-17 13:54:44

标签: git

我在GIT有一个项目,目前有3个分支,masterdevelopfeature/core-md-topbar

我在feature/core-md-topbar分支机构工作,发现了development分支中出现的一个错误,我在feature/core-md-topbar分支中意外修复了该错误。

现在,我还没有任何东西被推送到遥控器,但我希望我的修复程序成为develop分支的一部分。

所以,这是我目前的提交:

enter image description here

因此,我希望以FIX和哈希64376b2开头的提交在第二次提交后立即放置,并使用哈希8f928d0

当然,我不应该失去任何工作。

解决这个问题的重要方法是什么?

1 个答案:

答案 0 :(得分:0)

Cherry - 选择从core-md-topbardevelopment的修正提交:

git checkout development
git cherry-pick 64376b2

core-md-topbar删除修复提交:

您可以尝试进行交互式rebase:

git rebase -i HEAD~8

应该出现一个类似下面的窗口。请注意,提交从最旧最新显示。

pick 2eb670c comment
pick 8f928d0 comment
pick 8b96886 comment
pick 8fa512e comment
pick 995396f comment
pick dd4ab71 comment
pick 64376b2 comment
pick 704c5da comment

删除包含修复提交64376b2的行,并将其留下:

pick 2eb670c comment
pick 8f928d0 comment
pick 8b96886 comment
pick 8fa512e comment
pick 995396f comment
pick dd4ab71 comment
pick 704c5da comment

现在保存并关闭窗口,这将启动实际的rebase。您可能会遇到合并冲突,因为每次提交都是从8次提交之前重新应用的。

第一个樱桃采摘保险箱清洁安全。但是,如果core-md-topbar分支是公开共享并且您已从修复提交发布,则交互式rebase会面临潜在风险。如果您已经发布了,那么 revert 修复提交会更安全,假设您不想进入core-md-topbar分支:

git checkout core-md-topbar
git revert 64376b2

这指示Git在core-md-topbar的HEAD上进行 new 提交,这有效地撤消了修复提交。发布此信息不会对其他人使用的公共分支造成问题。

相关问题