我的回购有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
?
答案 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 --soft
将HEAD
移动到提供的提交,但不会更改工作树和索引。 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 ca5120c 的 René Scharfe (rscharfe
)(2021 年 1 月 1 日)。
(于 2021 年 1 月 15 日在 Junio C Hamano -- gitster
-- 被 commit df26861 合并)
rebase
:验证提交参数报告人:LeSeulArtichaut
签字人:René Scharfe
如果用户指定了要切换到的基本提交,请立即检查它是否确实引用了某个提交,以免以后发现它是无效对象时混淆。