Git 致命:需要一次修订
我的回购协议有3项承诺。我想挤成一个 我运行了Git 致命:需要一次修订,git,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?HEAD~3是当前提交的父级。但由于只有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
?HEAD~3
是当前提交的父级。但由于只有3次提交,因此没有父级(第一次提交是当前提交的父级)
您可以通过以下方法实现所需的结果:
将头
移动到提供的提交,但不更改工作树和索引。HEAD
现在指向第一次提交,但工作树和索引(暂存文件)与原始HEAD
同步;第一次提交和第三次提交之间的所有更改现在都处于暂存状态,等待提交
更新当前提交(这是您运行git reset--soft HEAD~2
后的第一次提交)。对于git 2.30.1(2021年第1季度),一个“()”将给出更明确的错误消息(因为您的案例中不存在HEAD~3
):
参见(2021年1月1日)作者
(于2021年1月15日合并)
:验证提交参数
报告人:Leseularthaut签字人:勒内·沙尔夫 如果用户指定要切换到的基本提交,请立即检查它是否实际引用了提交,以避免以后当它被证明是无效对象时混淆
~
后面的数字是您要返回的步骤数。所以,如果您有3次提交,那么您只能返回2次提交…为什么您要将我的命令更改为重置?我不想回去我想压缩我当前的更改您想回去并将三个提交引入的更改合并为一个。这是一种方法。还有其他方法(其中一种是您尝试过的方法,但它不起作用,因为HEAD~3
不存在)。
git reset --soft HEAD~2
git commit --amend
fatal: no such branch/commit 'HEAD~3'