我开始在主分支上工作,以为我的任务会很容易。过了一会儿,我意识到这将需要更多的工作,我想在一个新分支中完成所有这些工作。
如何创建一个新分支并随身携带所有这些更改而不会弄脏主服务器?
branch current changes
vs existing uncommited branch
。任何说英语的人都会立即发现它们是相同的,但是搜索引擎可能不会。保留这个问题。
我开始在主分支上工作,以为我的任务会很容易。过了一会儿,我意识到这将需要更多的工作,我想在一个新分支中完成所有这些工作。
如何创建一个新分支并随身携带所有这些更改而不会弄脏主服务器?
branch current changes
vs existing uncommited branch
。任何说英语的人都会立即发现它们是相同的,但是搜索引擎可能不会。保留这个问题。
Answers:
如果您尚未进行任何提交,则仅(1:分支)和(3:结帐)就足够了。
或者,在一个命令中:git checkout -b newBranch
$ 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)
master
”分支。您想在主题分支中继续完善它们,因此请topic/wip
从current分支创建分支HEAD
。master
分支以摆脱这三个提交。topic/wip
”分支并继续工作。注意:由于命令的“破坏性”效果git reset --hard
(它确实会重置索引和工作树。对工作树中跟踪文件的任何更改<commit>
都将被丢弃),我宁愿使用:
$ git reset --soft HEAD~3 # (2)
这样可以确保我不会丢失任何私有文件(未添加到索引中)。
该--soft
选项根本不会触及索引文件或工作树(但会将磁头重置为<commit>
,就像所有模式一样)。
使用Git 2.23+时,新命令git switch
将在一行中创建分支(具有相同的种类reset --hard
,因此请注意其效果):
git switch -f -c topic/wip HEAD~3
git reset --hard
会取消您的更改,如果尚未提交,则无法恢复!您可能只需要git checkout -b …
git checkout -b
第一位。
topic_wip
也会工作;)
像这个问题中所述:Git:从master上未标记/未提交的更改创建分支:不需要隐藏。
只需使用:
git checkout -b topic/newbranch
任何未提交的工作将被带到新分支。
如果您尝试推动,您将收到以下消息
致命的:当前分支功能/ NEWBRANCH没有上游分支。要推送当前分支并将远程设置为上游,请使用
git push --set-upstream origin feature/feature/NEWBRANCH
按照建议的方法远程创建分支:
git push --set-upstream origin feature/feature/NEWBRANCH
按着这些次序:
创建一个新分支:
git branch newfeature
签出新分支:(这不会重置您的工作。)
git checkout newfeature
现在,在这个新分支上提交您的工作:
git commit -s
使用上述步骤将使您的原始分支保持干净,并且您无需执行任何“ git reset --hard”操作。
-s
在第3步
由于尚未进行任何提交,因此您可以将所有更改保存到存储中,创建并切换到新分支,然后将这些更改弹出回到您的工作树中:
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 stash push
不是命令。您可能想使用git stash
或git stash save
。如果要在存储中包含未跟踪的文件,请使用该--include-untracked
选项。同样,如果要在存储中包含未跟踪的文件和被忽略的文件,请改用该--add
选项。