我急切地躲避到代码模式并修改了一些文件,但忽略了先从master分支。 模组不是那么广泛,以至于我无法重做它们,但是有什么好方法可以将我的(到目前为止,尚未提交的)更改迁移到新的分支,最终保持 master 不变?
如果还没有在任何地方提交(git status
显示一堆修改过的东西,如果它也是"git add"-ed也没关系):
$ git checkout -b newbranch
尽管名称checkout
但此用法(带-b
)不会检查任何内容。 -b
标志显示"创建一个新分支",因此 git 创建分支名称并使其对应于当前提交HEAD
。 然后它HEAD
指向新分支,并停在那里。
因此,您的下一次提交是在 newbranch
上,它的父提交是您开始修改文件时所在的提交。 所以假设你在master
上,并且你有这些提交:
A - B - C <-- HEAD=master
checkout -b
使以下内容:
A - B - C <-- master, HEAD=newbranch
稍后的提交会添加一个新的提交D
:
A - B - C <-- master
D <-- newbranch
git branch -M master my-branch
使用
-m
或-M
选项,<oldbranch>
将重命名为<newbranch>
。如果<oldbranch>
有相应的 reflog,则会重命名它以匹配<newbranch>
,并创建一个 reflog 条目来记住分支重命名。如果存在<newbranch>
,则必须使用-M
来强制进行重命名。
源
然后
git fetch origin refs/heads/master:refs/heads/master
或
git branch master my-branch (or another ref)
git stash
git stash branch <branchname>