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
使用
-m
or-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 回答