2010-09-12 91 views

回答

10

你可以在你已经链接的问题中完全遵循相同的过程,但在签出根提交后,你可以使用git commit --amend来修改原始提交,然后git commit进行额外的提交,然后继续rebase命令。

根据您想如何分割提交您可以使用git rm --cached删除您要添加的文件在第二初始git commit --amend之前提交和编辑您要调用这些文件git add前看不同的任何文件,再次致电git commit --amend之前。

呼吁git commit --amend,以确保您提交的原始根的完全状态之后提交您可以拨打:

git checkout <sha1-of-original-root> -- . 

之前调用git commit做出第二承诺分裂根犯。

+1

(重写)你不希望'git reset --hard'在这里。您可以使用'git reset - .',但不会“恢复”工作树,只有索引。可能最好的办法是'git checkout - 。'它将更新索引和工作树,但不更新HEAD(让你准备好提交拆分(原始根)提交的第二部分) 。这里的主要想法是* reset *和* checkout *都会改变HEAD,除非你给它们一个路径参数。 – 2010-09-13 02:25:02

+0

@Chris Johnsen:你绝对正确。我正在考虑两个阶段的重置,然后是“ - 哈德”,但实际上并没有这样写。结帐解决方案更好。 – 2010-09-13 06:48:17

2

可以使用--root选项告诉rebase要重写根/第一承诺:

$ git rebase --interactive --root 

然后根承诺将在底垫TODO列表中显示出来,你可以选择要编辑它:

edit <root commit sha> <original message> 
pick <other commit sha> <message> 
... 

这是--rootthe Git rebase docs的解释:

将所有提交从<branch>恢复为可用,而不是将其限制为<upstream>。这允许您重新分支分支上的根提交。

相关问题