我急切地陷入代码模式并修改了一些文件,但忽略了从master分支。 mod不是那么广泛,我不能重做它们,但是什么是在master中进行我的(到目前为止,未提交的)更改并将它们迁移到新分支的好方法,最后让master保持不变?
答案 0 :(得分:32)
如果尚未在任何地方提交(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
答案 1 :(得分:4)
git branch -M master my-branch
然后
git fetch origin refs/heads/master:refs/heads/master
或
git branch master my-branch (or another ref)
答案 2 :(得分:3)
git stash
git stash branch <branchname>