这里有一个父问题:使用 Git 将最近的提交移动到新分支
我接手了一个项目,该项目的工作树充满了仍需要组织的文件——有些是指正在进行的工作任务;其他都完成了。我最近提交了已完成的工作,但这不是用于生产的。我怎样才能谨慎地将它移动到一些新的分支而不搞砸我当前的树?
I'd like to change
Working tree - A - B - C - D - E
to
Working tree - B - C - D - E
/
A
这里有一个父问题:使用 Git 将最近的提交移动到新分支
我接手了一个项目,该项目的工作树充满了仍需要组织的文件——有些是指正在进行的工作任务;其他都完成了。我最近提交了已完成的工作,但这不是用于生产的。我怎样才能谨慎地将它移动到一些新的分支而不搞砸我当前的树?
I'd like to change
Working tree - A - B - C - D - E
to
Working tree - B - C - D - E
/
A
git branch tmp
git reset --soft B
将 HEAD(并且只有 HEAD)移动到(用 ' ' 分支B标记后)Atmp
有关更多信息,请参阅“实际用途git reset --soft? ” reset --soft。
与checkout -b "name of branch"您一起创建一个新的本地分支。
先在某处写A的SHA1,以后会用到。
git checkout <E's SHA1>
git rebase -i HEAD~6(6 是从 E 到 A 的提交距离加一)
在编辑器中删除 A 的行并保存。
现在你有了这个:
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