我想在我的git存储库中拆分第一个提交,但我不能使用rebase来执行此操作,因为需要父节点。我发现Edit the root commit in Git?对于修改第一次提交很有用,但是没有拆分它。我怎么拆分它?
答案 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>
限制它们。这允许您在分支上重新定义根提交。