我急切地陷入代码模式并修改了一些文件,但忽略了从master分支.mod不是那么广泛,我不能重做它们,但是什么是在master中进行我的(迄今为止,未提交的)更改并将它们迁移到新分支的好方法,最后让master保持不变?
tor*_*rek 35
如果还没有在任何地方提交(git status显示修改了一堆东西,如果它是"git add"-ed也可以):
$ git checkout -b newbranch
Run Code Online (Sandbox Code Playgroud)
尽管名称checkout这个用法(with -b)没有检查任何东西.该-b标志为"创建一个新的分支",所以Git会创建一个分支的名称,并使其对应于当前HEAD提交.然后它HEAD指向新分支,然后停在那里.
因此newbranch,您的下一次提交将作为其父提交,在您开始修改文件时进行的提交.假设您已经开启master,并且您有这些提交:
A - B - C <-- HEAD=master
Run Code Online (Sandbox Code Playgroud)
这checkout -b使得阅读:
A - B - C <-- master, HEAD=newbranch
Run Code Online (Sandbox Code Playgroud)
稍后提交会添加一个新提交D:
A - B - C <-- master
\
D <-- newbranch
Run Code Online (Sandbox Code Playgroud)
git branch -M master my-branch
Run Code Online (Sandbox Code Playgroud)
然后
git fetch origin refs/heads/master:refs/heads/master
Run Code Online (Sandbox Code Playgroud)
要么
git branch master my-branch (or another ref)
Run Code Online (Sandbox Code Playgroud)