将现有的未提交的工作移至Git中的新分支

我开始了一些关于新功能的工作,在编写了一些代码之后,我决定将这个功能放在它自己的分支上。

如何将现有的未提交更改移至新分支并重置当前的分支?

我想重新设置当前分支,同时保留新功能的现有工作。


使用以下内容:

git checkout -b <new-branch>

这将使您的当前分支保持原样,创建并签出新分支并保留所有更改。 然后你可以做一个提交:

git add <files>

并通过以下方式致力于您的新分支:

git commit -m "<Brief description of this commit>"

工作目录中的更改和索引中的更改不属于任何分支。 这改变了这些改变将以什么结束。

你不重置你的原始分支,它保持原样。 <old-branch>上的最后一次提交仍然是相同的。 因此你checkout -b然后提交。


或者:

  • 将当前更改保存到临时隐藏:

    $ git stash

  • 根据这个存储创建一个新的分支,并切换到新的分支:

    $ git stash branch <new-branch> stash@{0}

  • 提示:使用Tab键减少输入储藏名称。


    如果您在编写代码时在主分支上进行了提交 ,但您现在想要将这些提交移至其他分支:

  • 将您当前的历史记录复制到新的分支中,并带来任何未提交的更改:

    git checkout -b <new-feature-branch>
    
  • 现在强制原始的“凌乱”分支回滚:(不切换到它)

    git branch -f <previous-branch> <earlier-commit-id>
    

    例如:

    git branch -f master origin/master
    

    或者你做了4次提交:

    git branch -f master HEAD~4
    
  • 警告:看起来git branch -f master origin/master会重置该分支的跟踪信息。 因此,如果您将master分支配置为推送到origin/master以外的其他地方,那么该配置将会丢失。

    另一种方法是使用这种重置技术。 但这些说明将放弃所有未提交的更改。 如果你想保留这些东西,先把它们藏起来,最后把它们除掉。

    链接地址: http://www.djcxy.com/p/555.html

    上一篇: Move existing, uncommitted work to a new branch in Git

    下一篇: Undoing a git rebase