繁体   English   中英

我如何 git rebase 第一次提交?

[英]How do I git rebase the first commit?

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

我如何引用“在有任何提交之前提交”或返回并插入一个空提交?

最简单的方法,使用足够新的 git(这已经很长时间了,所以你应该拥有这个):

git rebase -i --root

另一种简单的方法,正如twalberg 在评论中指出的那样,是使用git checkout --orphan设置以进行新的根提交,您可以在其上复制旧提交。 (无论如何,这就是rebase -i --root最终在内部执行的操作。)

如果您想对已经在提交中的文件进行更改、编辑作者/消息等, torek 的回答很好。但是如果您想拆分提交或类似的东西,那么您很可能会遇到麻烦,因为您无法从初始提交中执行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~

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM