我在GIT有一个项目,目前有3个分支,master
,develop
和feature/core-md-topbar
。
我在feature/core-md-topbar
分支机构工作,发现了development
分支中出现的一个错误,我在feature/core-md-topbar
分支中意外修复了该错误。
现在,我还没有任何东西被推送到遥控器,但我希望我的修复程序成为develop
分支的一部分。
所以,这是我目前的提交:
因此,我希望以FIX
和哈希64376b2
开头的提交在第二次提交后立即放置,并使用哈希8f928d0
。
当然,我不应该失去任何工作。
解决这个问题的重要方法是什么?
答案 0 :(得分:0)
Cherry - 选择从core-md-topbar
到development
的修正提交:
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 提交,这有效地撤消了修复提交。发布此信息不会对其他人使用的公共分支造成问题。