这种情况偶尔发生在每个开发人员身上.您开始编写新功能并忘记首先在本地分支.
所以,如果发生了这种情况,我可以说嘿,将这些未提交的(或者承诺 - 我知道这两种情况,我想用这个覆盖)转移到我当地的新分支,所以我不必须支持他们并将我的更改复制到一个新的分支,以便能够继续我的方式?
如果您尚未提交更改,则可以在提交之前切换到新分支.
git checkout -b my-new-branch
这将创建一个新的分支,my-new-branch
并立即检查出来.
除非在开始使用功能部件后进行了不应该进入功能部件分支的更改,否则就像创建功能部件分支并将错误的高级主分支倒回到最后一个不属于功能部件分支的提交一样简单:
MA --- MB --- MC --- FA --- FB --- FC <- master git checkout -b feature MA --- MB --- MC --- FA --- FB --- FC <- feature ^ | master git branch -f master MC MA --- MB --- MC --- FA --- FB --- FC <- feature ^ | master
如果您实际上混合了提交,那么您将面临更大的问题。在这种情况下,您需要执行重新配置以取消混合提交,以便可以继续执行上述步骤:
MA --- FA --- MB --- MC --- FB --- FC <- master git rebase -i MA #reorder the lines by moving the commit FA down after MC MA --- MB' --- MC' --- FA' --- FB' --- FC' <- master #proceed as above
请注意,您正在用以下方式重写历史记录:如果您已经发布FA
,则会遇到麻烦。在这种情况下,其他人会注意到您以一种或另一种方式搞砸了,正确的解决方案将包括人与人之间大量的交流。