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

我开始了一些新function的工作,经过编码后,我决定这个function应该在自己的分支上。

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

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

使用以下内容:

git checkout -b <new-branch> 

这将离开你的当前分支,创build并签出一个新的分支,并保持所有的变化。 然后你可以做一个提交:

 git add <files> 

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

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

工作目录中的更改和索引中的更改不属于任何分支。 这将改变这些变化将在哪里结束。

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

或者:

  1. 将当前更改保存到临时存储中:

    $ git stash

  2. 根据这个存储创build一个新的分支,并切换到新的分支:

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

提示:使用Tab键减lessinput储藏名称。

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

  1. 将您当前的历史logging复制到一个新的分支,带来任何未提交的更改:

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

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

    例如:

     git branch -f master origin/master 

    或者你做了4次提交:

     git branch -f master HEAD~4 

如果你提交它,你也可以select一个提交ID。 当我开始在master中工作时,我经常这样做,然后在推到我的起源之前想创build一个本地分支。

 git cherry-pick <commitID> 

如这里所描述的,你可以用樱桃挑选做很多事情,但这可能是一个用例。