使用当前更改创建Git分支

时间:2010-10-10 08:44:13

标签: git git-branch

我开始在我的分支上工作,认为我的任务很简单。过了一会儿,我意识到这将需要更多的工作,我想在一个新的分支中完成所有这些工作。

如何创建新分支并随身携带所有这些更改而不会弄脏 master

5 个答案:

答案 0 :(得分:583)

如果你还没有做出任何提交,只有(1:分支)和(3:结账)就足够了。
或者,在一个命令中: git checkout -b newBranch

git reset man page中所述:

$ git branch topic/wip     # (1)
$ git reset --hard HEAD~3  # (2)  NOTE: use $git reset --soft HEAD~3 (explanation below)
$ git checkout topic/wip   # (3)
  1. 你做了一些提交,但意识到他们在“master”分支中还为时过早。您想继续在主题分支中对它们进行抛光,因此请从当前topic/wip创建“HEAD”分支。
  2. 回滚master分支以摆脱这三个提交。
  3. 切换到“topic/wip”分支并继续工作。

  4. 注意:由于git reset --hard命令的“破坏性”效果(它会重置索引和工作树。自<commit>以来工作树中跟踪文件的任何更改都被丢弃),I宁愿选择:

    $ git reset --soft HEAD~3  # (2)
    

    这将确保我没有丢失任何私人文件(未添加到索引中) --soft选项根本不会触及索引文件或工作树(但将头重置为<commit>,就像所有模式一样)。

答案 1 :(得分:223)

与此问题中所述:Git: Create a branch from unstagged/uncommited changes on master:藏匿不是必需的。

只需使用:

git checkout -b topic/newbranch

任何未提交的作品都将被带到新分支。

如果您尝试推送,您将收到以下消息

  

致命:当前分支功能/ NEWBRANCH没有上游分支。至   按下当前分支并将远程设置为上游,使用

git push --set-upstream origin feature/feature/NEWBRANCH

按照建议远程创建分支:

git push --set-upstream origin feature/feature/NEWBRANCH

答案 2 :(得分:65)

请按照以下步骤操作:

  1. 创建一个新分支:

    git branch newfeature
    
  2. 结帐新分行:(这不会重置您的工作。)

    git checkout newfeature
    
  3. 现在就在这个新分支上提交你的工作:

    git commit -s
    
  4. 使用上述步骤将保持原始分支清洁,您不必执行任何'git reset --hard'。

答案 3 :(得分:20)

由于您尚未进行任何提交,您可以将所有更改保存到存储,创建并切换到新分支,然后将这些更改弹回到工作树中:

git stash  # save local modifications to new stash
git checkout -b topic/newbranch
git stash pop  # apply stash and remove it from the stash list

答案 4 :(得分:9)

将新更改添加到新分支并推送到远程:

git branch branch/name
git checkout branch/name
git push origin branch/name

我经常忘记添加原始部分以推送并混淆为什么我在bitbucket中看不到新的分支/提交