I eagerly ducked into code mode and modified some files, but neglected to branch from master first. The mods aren't so extensive that I can't redo them, but what's a good way of taking my (so far, uncommitted) changes in master and migrating them to a new branch, leaving master untouched in the end?
18903 次
3 回答
41
如果尚未在任何地方提交(git status显示一堆修改过的东西,如果它也是“git add”-ed 也没关系):
$ git checkout -b newbranch
尽管有这个名字,checkout这个用法(with -b)并没有检查任何东西。该-b标志表示“创建一个新分支”,因此 git 创建分支名称并使其与当前HEAD提交相对应。然后它HEAD指向新的分支,并停在那里。
因此,您的下一个提交是 on newbranch,它的父提交是您开始修改文件时的提交。所以假设你在master,并且你有这些提交:
A - B - C <-- HEAD=master
使checkout -b这读作:
A - B - C <-- master, HEAD=newbranch
后来的提交添加了一个新的提交D:
A - B - C <-- master
\
D <-- newbranch
于 2013-10-26T22:16:15.333 回答
5
git branch -M master my-branch
使用
-mor-M选项,<oldbranch>将重命名为<newbranch>. 如果<oldbranch>有相应的 reflog,则将其重命名为 match<newbranch>,并创建一个 reflog 条目以记住分支重命名。如果<newbranch>存在,-M必须用于强制重命名发生。
接着
git fetch origin refs/heads/master:refs/heads/master
或者
git branch master my-branch (or another ref)
于 2013-10-26T22:14:43.207 回答
3
git stash
git stash branch <branchname>
于 2013-10-26T22:12:38.317 回答