忘了在git中分支,需要从master移动更改

时间:2013-10-26 22:09:10

标签: git git-branch

我急切地陷入代码模式并修改了一些文件,但忽略了从master分支。 mod不是那么广泛,我不能重做它们,但是什么是在master中进行我的(到目前为止,未提交的)更改并将它们迁移到新分支的好方法,最后让master保持不变?

3 个答案:

答案 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>