致命:需要一次修订

时间:2018-03-12 12:35:39

标签: git

我的回购有3个提交。我想挤到一个。

我跑git rebase -i HEAD~3并收到此错误:

fatal: Needed a single revision
invalid upstream HEAD~3

我能够运行git rebase -i HEAD~2然后git push origin +master,现在我有2次提交。

但为什么我不能git rebase -i HEAD~3

2 个答案:

答案 0 :(得分:1)

HEAD~3是当前提交的grand-grand-parent。但由于只有3个提交,因此没有grand-grand-parent(第一个提交是当前提交的祖父)。

您可以使用git reset后跟git commit

来获得所需的结果
git reset --soft HEAD~2
git commit --amend

git reset --softHEAD移动到提供的提交,但不会更改工作树和索引。 HEAD现在指向第一个提交,但工作树和索引(分阶段文件)与原始HEAD同步;第一次提交和第三次提交之间的所有更改现在都已暂存,等待提交。

git commit --amend更新当前提交(这是您运行git reset --soft HEAD~2后的第一次提交)。

答案 1 :(得分:0)

在 Git 2.30.1(2021 年第一季度)中,“git rebase(man) 将提供更明确的错误消息(因为 HEAD~3在您的情况下不存在):

fatal: no such branch/commit 'HEAD~3'

请参阅 commit ca5120cRené Scharfe (rscharfe)(2021 年 1 月 1 日)。
(于 2021 年 1 月 15 日在 Junio C Hamano -- gitster --commit df26861 合并)

<块引用>

rebase:验证提交参数

报告人:LeSeulArtichaut
签字人:René Scharfe

<块引用>

如果用户指定了要切换到的基本提交,请立即检查它是否确实引用了某个提交,以免以后发现它是无效对象时混淆。