此处有一个家长问题:Move the most recent commit(s) to a new branch with Git
我接管了一个项目,其中包含一个仍然需要组织的文件的工作树 - 有些是指正在进行的工作任务;其他人完成了。我最近承诺完成了一项工作,但这并不是为了生产。如何谨慎地将其移动到一个新的分支而不会搞砸我当前的树?
I'd like to change
Working tree - A - B - C - D - E
to
Working tree - B - C - D - E
/
A
答案 0 :(得分:0)
使用checkout -b "name of branch"
,您将创建一个新的本地分支。
答案 1 :(得分:0)
git branch tmp
git reset --soft B
将HEAD(并且只有HEAD)移动到B
(在用A
'分支标记tmp
之后)
有关reset --soft
的更多信息,请参阅“Practical uses of git reset --soft
?”。
答案 2 :(得分:0)
首先在某个地方写下A的SHA1,你以后会需要它。
git checkout <E's SHA1>
git rebase -i HEAD~6
(6是从E到A加1的提交距离)
在编辑器中删除A&#39行并保存。
现在你有了这个:
Working tree - B - C - D - E
现在我们要创建一个分支到A,从B开始:
git checkout <B's SHA1>
git branch BAbranch
(或任何你想称之为的内容)
git checkout BAbranch
git cherry-pick <A's SHA1>
现在你有了这个:
Working tree - B - C - D - E
\
A