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

Forgot to branch in git, need to move changes from master

本问题已经有最佳答案,请猛点这里访问。

我迫不及待地进入代码模式,修改了一些文件,但忽略了先从master分支。mod并不是那么广泛,我无法重做它们,但是有什么好方法可以将master中的(到目前为止,未提交的)更改转移到新的分支,最终不影响master?


如果还没有提交到任何地方(git status显示了一堆修改过的内容,如果是"git-add ed",也可以):

1
$ git checkout -b newbranch

尽管名称为checkout,但此用法(与-b一起使用)并未检查任何内容。-b标志表示"创建一个新的分支",因此git创建分支名称并使其与当前HEAD提交相对应。然后它使HEAD指向新的分支,并停在那里。

因此,下一次提交是在newbranch上进行的,它的父提交是在开始修改文件时所进行的提交。所以假设你是在以东十一〔七〕号上,并且你有这些承诺:

1
A - B - C       <-- HEAD=master

checkout -b对此作了如下解释:

1
A - B - C       <-- master, HEAD=newbranch

稍后的提交会添加一个新的提交cx1〔9〕:

1
2
3
A - B - C       <-- master
          \
            D   <-- newbranch

1
git branch -M master my-branch

然后

1
git fetch origin refs/heads/master:refs/heads/master

1
git branch master my-branch  (or another ref)


1
2
git stash
git stash branch <branchname>