这种情况偶尔发生在每个开发人员身上.您开始编写新功能并忘记首先在本地分支.
所以,如果发生了这种情况,我可以说嘿,将这些未提交的(或者承诺 - 我知道这两种情况,我想用这个覆盖)转移到我当地的新分支,所以我不必须支持他们并将我的更改复制到一个新的分支,以便能够继续我的方式?
mas*_*son 10
如果您尚未提交更改,则可以在提交之前切换到新分支.
git checkout -b my-new-branch
Run Code Online (Sandbox Code Playgroud)
这将创建一个新的分支,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
Run Code Online (Sandbox Code Playgroud)
如果您实际上混合了提交,那么您将面临更大的问题。在这种情况下,您需要执行重新配置以取消混合提交,以便可以继续执行上述步骤:
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
Run Code Online (Sandbox Code Playgroud)
请注意,您正在用以下方式重写历史记录:如果您已经发布FA,则会遇到麻烦。在这种情况下,其他人会注意到您以一种或另一种方式搞砸了,正确的解决方案将包括人与人之间大量的交流。
那么在文件被修改后切换到一个新的分支是没有坏处的。已编辑的未提交文件始终在签出的任何分支的上下文中查看:
git checkout -b mytopicbranch
Run Code Online (Sandbox Code Playgroud)
按照描述:这里:
git branch mytopicbranch
Run Code Online (Sandbox Code Playgroud)
它现在拥有您想要进行的所有提交。
git reset abc5b0de1 --hard
Run Code Online (Sandbox Code Playgroud)
假设abc5b0de1是在您意外提交之前提交的指纹。
现在您可以mytopicbranch根据需要切换回。
按着这些次序:
创建一个新分支:
git branch newfeature
Run Code Online (Sandbox Code Playgroud)签出新分支:(这不会重置您的工作。)
git checkout newfeature
Run Code Online (Sandbox Code Playgroud)现在将您的工作提交到这个新分支上:
git commit -s
Run Code Online (Sandbox Code Playgroud)小智 3
存储您的更改,创建一个新分支,然后将您的存储重新应用到新分支是否不起作用?
| 归档时间: |
|
| 查看次数: |
1976 次 |
| 最近记录: |