忘记在 git 中分支,需要从主节点移动更改



我急切地躲避到代码模式并修改了一些文件,但忽略了先从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>

最新更新