我用git init
创建了一个新的repo,然后进行了三次提交。现在我想重定基,回到第一次提交并修改,但是如果我执行git rebase -i HEAD~3
,它会显示错误-fatal: invalid upstream 'HEAD~3'
!
如果我尝试同样的HEAD~2
,那么它有点工作,但只让我重新安排最后两个提交。
我如何引用'提交之前有任何提交'或返回并插入一个空提交?git rebase -i HEAD~3
错误:
fatal: invalid upstream 'HEAD~3'
2条答案
按热度按时间cdmah0mi1#
简单的方法是,使用一个最近的Git(它已经发布很长时间了,所以你应该有这个):
另一个简单的方法,正如twalberg在一个注解中所指出的,这个注解后来被删除了,但现在在https://stackoverflow.com/a/68279810/1256452's answer中被扩展了,就是使用
git checkout --orphan
来设置一个新的根提交,你可以在它上面复制旧的提交。(这就是rebase -i --root
最终在内部所做的事情。)出于某些目的,比如拆分最初的提交,这个初始空提交是有帮助的。来自未来(2022年)的旁注:在第一次提交时只包含一些样板文件,比如
README
,这通常是个好主意。在任何新的、空的仓库中的第一次提交总是有点特殊。注意,如果你使用Bitbucket、GitHub和GitLab等托管网站,当你在那里创建仓库时,他们通常会为你做这样的初始提交。这样您就可以克隆这样创建的存储库,并有一个起点。oxalkeyp2#
torek's answer可以用来修改提交中的文件,编辑作者/消息等。但是如果你想分割提交或类似的操作,那么你很可能会遇到麻烦,因为你不能从初始提交开始执行
git reset HEAD~
。要实现这一点,可以插入一个空的初始提交,如下所示:
那么你可以执行
git rebase -i
,编辑提交(第一个非空提交),然后像平常一样执行git reset HEAD~
。