每次我认为我都是Git向导时,都会发生一些全新的怪异事情,使我回到原位...
我当时正在压缩交互式基础中的两次提交,突然之间,Git的输出开始像覆盖自己一样,并且混乱中出现了多个Git Bash提示,好像命令认为它们在完成之前就已经完成了。实际上是(不幸的是,我忘记了截图)。现在,我的存储库似乎已损坏,因为我处于REBASE-i
模式,无法中止。以下是一些屏幕快照,这些屏幕快照有望帮助我解决更多问题(git s
是git status
的别名)。我以前从没看过Cannot store
消息,而且我不明白rebase
可能如何生成该消息。我总是可以删除该存储库并制作一个新的克隆,但是我认为在将毛巾扔到这里之前,我会呼吁SO ...
编辑:
这是导致此问题的我采取的步骤:
git commit --squash head
,以便我可以使用上一次提交来压缩最新更改。git rebase -i --autosquash head^^
以使用已设置的squash
命令启动交互式变基。.pack
文件,如果我想再试一次。我以前看过那条消息;通常情况下,它只会一直询问您重试一次,因此我以 Ctrl + C 退出了。git rebase --abort
,并显示以下错误消息。git rebase --edit-todo
并删除了待办事项文件的所有行,但是重新设置仍然失败。git rebase --continue
,这使我退出了REBASE-i
模式,这使我能够在非常慌乱的状态下继续生活... 版本信息:
-Windows版Git:2.18.0
-Windows:Windows 10 Pro 1803
答案 0 :(得分:1)
好吧,这显然是一个错误,与rebase的--autostash
有关(可能是通过git config
的{{1}}设置启用的)。要获取更多详细信息并进行调试,您可能需要提供特定的Git版本。 1 自动隐藏本身触发的原因是:
rebase.autoStash
,以便我可以使用上一次提交来压缩最新更改。git commit --squash head
...
(我假设第1步实际上是git rebase
。在Windows上,您可以 用小写字母写git merge --squash HEAD
,尽管我认为这是一个坏习惯,因为它可能会如果您不喜欢输入四个大写字母,请考虑使用HEAD
作为@
的简写,该符号在任何地方都可以使用,至少自Git起1.8。)
中间没有 HEAD
时,git commit
保持未提交状态,因为git merge --squash
始终打开--squash
。除了使--no-commit
运行git rebase
(自1.8.4起)的能力之外,这使重新定位处于无法启动的位置。
根据下面的注释,以上所述是错误的,我现在不确定为什么自动存储代码必须运行并感到困惑。
要执行自动存储,git stash
实际上必须运行git rebase
,并且存在各种错误(我认为其中一个严重程度足以避免使用自动存储)在此之前,直到Git 2.0.1 / 2.1.0版,更多错误已在2.10和2.13中修复。
(我自己仍然不使用自动存储。我只想提醒我,在重新定基础之前需要提交或存储,一般而言,我现在想 commit 。)< / p>
几乎可以肯定,解除链接错误是特定于Windows的,并且可能只是侧面问题。清空TODO(git stash
)的问题,至少是 a ,已在Git 2.0.1 / 2.1.0中修复!参见release notes。
1 在我看来,这是Windows版本,虽然没有在其他系统上触发,但我没有。尽管如此,我可能自己也没有时间去研究它。
答案 1 :(得分:0)
通过运行REBASE
,我能够退出git rebase --continue
模式,,所以我不确定发生了什么。如果有人希望更好地解释发生的情况,我将等待将此标记为可接受的答案。
请参阅@torek的答案/评论,以获得其他一些信息,尽管从技术上讲它没有提供解决方案。