忘了创建新的分支.如何将更改传输到新分支

Pos*_*Guy 6 git github

这种情况偶尔发生在每个开发人员身上.您开始编写新功能并忘记首先在本地分支.

所以,如果发生了这种情况,我可以说嘿,将这些未提交的(或者承诺 - 我知道这两种情况,我想用这个覆盖)转移到我当地的新分支,所以我不必须支持他们并将我的更改复制到一个新的分支,以便能够继续我的方式?

mas*_*son 10

如果您尚未提交更改,则可以在提交之前切换到新分支.

git checkout -b my-new-branch
Run Code Online (Sandbox Code Playgroud)

这将创建一个新的分支,my-new-branch并立即检查出来.


cma*_*ter 6

除非在开始使用功能部件后进行了不应该进入功能部件分支的更改,否则就像创建功能部件分支并将错误的高级主分支倒回到最后一个不属于功能部件分支的提交一样简单:

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,则会遇到麻烦。在这种情况下,其他人会注意到您以一种或另一种方式搞砸了,正确的解决方案将包括人与人之间大量的交流。


sha*_*neb 6

如果您还没有提交:

那么在文件被修改后切换到一个新的分支是没有坏处的。已编辑的未提交文件始终在签出的任何分支的上下文中查看:

git checkout -b mytopicbranch
Run Code Online (Sandbox Code Playgroud)

如果您已经承诺:

按照描述:这里

  1. 创建您希望创建的分支(但不要切换到它):
git branch mytopicbranch
Run Code Online (Sandbox Code Playgroud)

它现在拥有您想要进行的所有提交。

  1. 将主分支重置回这些提交之前:
git reset abc5b0de1 --hard
Run Code Online (Sandbox Code Playgroud)

假设abc5b0de1是在您意外提交之前提交的指纹。

现在您可以mytopicbranch根据需要切换回。


Ary*_*yan 5

按着这些次序:

  1. 创建一个新分支:

    git branch newfeature
    
    Run Code Online (Sandbox Code Playgroud)
  2. 签出新分支:(这不会重置您的工作。)

    git checkout newfeature
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在将您的工作提交到这个新分支上:

    git commit -s
    
    Run Code Online (Sandbox Code Playgroud)


小智 3

存储您的更改,创建一个新分支,然后将您的存储重新应用到新分支是否不起作用?

  • 我的观点是,如果你要提供答案,你应该在答案中包含足够的细节,这样别人就不必去其他地方才能明白你的意思。链接很好,但只能作为答案的补充。相关详细信息需要包含在您的答案中。 (4认同)
  • 有关如何隐藏和应用的示例会很有帮助。 (2认同)
  • 答案`git stash; git stash Branch &lt;name&gt;` 实际上比您的反问句或您的查找建议要短。 (2认同)