使用当前更改创建 Git 分支

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

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

答案

如果您尚未进行任何提交,则仅(1:分支)和(3:结帐)就足够了。
或者,在一个命令中: git checkout -b newBranch

git reset手册页所述

$ 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创建 “ topic/wip ” 分支。
  2. 倒退master分支以摆脱这三个提交。
  3. 切换到 “ topic/wip ” 分支并继续工作。

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

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

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

像这个问题中所述: Git:从 master 上未标记 / 未提交的更改创建分支:不需要隐藏

只需使用:

git checkout -b topic/newbranch

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

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

致命的:当前分支功能 / NEWBRANCH 没有上游分支。要推送当前分支并将远程设置为上游,请使用

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

按照建议的方法远程创建分支:

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

跟着这些步骤:

  1. 创建一个新分支:

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

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

    git commit -s

使用上述步骤将使您的原始分支保持干净,并且您无需执行任何 “git reset --hard” 操作。

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

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

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

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

很多时候,我忘记添加原点部分以进行推送,并且感到困惑,为什么我在 bitbucket 中看不到新的分支 / 提交