我如何git rebase第一次提交?

时间:2014-04-10 15:35:10

标签: git git-rebase

我使用git init创建了一个新的repo,然后进行了三次提交。现在我想重新修改我的第一次提交,但是如果我做git rebase -i HEAD~3它会抱怨!如果我尝试使用HEAD~2,那么它有点工作,但只允许我重新安排最后两次提交。

如何在有任何提交之前引用'提交'或返回并插入空提交?

2 个答案:

答案 0 :(得分:40)

简单的方法,最近有足够的git(这已经很久了,所以你应该有这个):

git rebase -i --root

另一种简单的方法,如twalberg noted in a comment,是使用git checkout --orphan设置进​​行新的根提交,您可以复制旧的提交。 (这就是rebase -i --root最终在内部做的事情。)

答案 1 :(得分:1)

torek's answer 如果你想对已经在提交中的文件进行更改,编辑作者/消息等很好。但是如果你想拆分提交或类似的东西,那么你很有可能会遇到麻烦,因为您无法从初始提交开始执行 git reset HEAD~

为了实现这一点,您可以像这样插入一个空的初始提交:

git checkout --orphan empty-initial-commit
git commit --allow-empty -m 'Empty initial commit'
git checkout <branch>
git rebase empty-initial-commit
git branch -d empty-initial-commit

然后您可以执行 git rebase -i,编辑提交(第一个非空提交),然后像平常一样执行 git reset HEAD~