我开始在我的 主 分支上工作,认为我的任务会很容易。过了一会儿,我意识到这需要更多的工作,我想在一个新的分支中完成所有这些工作。
如何在不弄脏 master 的情况下创建一个新分支并随身携带所有这些更改?
如果您还没有进行任何提交,那么只有 (1: branch) 和 (3: checkout) 就足够了。 或者,在一个命令中: git checkout -b newBranch
git checkout -b newBranch
使用Git 2.23+(2019 年第三季度),新命令gitswitch将在一行中创建分支(使用相同类型的reset --hard,因此 请注意其效果 ):
gitswitch
reset --hard
# First, save your work in progress! git stash # Then, one command to create *and* switch to a new branch git switch -f -c topic/wip HEAD~3
如git reset手册页中所述:
git reset
$ git stash # (0) Save your work in progress $ 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
HEAD
再次:在一个命令中完成所有这些的新方法(自 2019 年和 Git2.23 起):
git switch -f -c topic/wip HEAD~3
注意:由于命令的“破坏性”效果git reset --hard(它确实会重置索引和工作树。工作树中跟踪文件的任何更改<commit>都将被丢弃),我宁愿选择:
git reset --hard
<commit>
$ git reset --soft HEAD~3 # (2)
这将确保我不会丢失任何私人文件(未添加到索引中)。 该--soft选项根本不会触及索引文件或工作树(但会将头部重置为<commit>,就像所有模式一样)。
--soft