拆分git中的第一个提交

时间:2010-09-12 16:52:12

标签: git

我想在我的git存储库中拆分第一个提交,但我不能使用rebase来执行此操作,因为需要父节点。我发现Edit the root commit in Git?对于修改第一次提交很有用,但是没有拆分它。我怎么拆分它?

2 个答案:

答案 0 :(得分:13)

您可以在您链接到的问题中完全按照相同的流程进行操作,但在签出根提交后,您可以使用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 :(得分:2)

您可以使用--root选项告诉rebase您要重写root / first commit:

$ git rebase --interactive --root

然后根提交将显示在rebase TODO列表中,您可以选择编辑它:

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

这是来自the Git rebase docs--root的解释:

  

重新启动从<branch>可到达的所有提交,而不是使用<upstream>限制它们。这允许您在分支上重新定义根提交。