我本来想做一个变基来删除我的最后一次提交,但我不想完成,所以我退出了。(我意识到这可能不是最好的方法,但它的完成)我想我做错了,因为我得到的错误:fatal: Could not open file .git/rebase-merge/done for reading: No such file or directory每次运行git status。我如何摆脱这个错误,以便我可以继续提交?我能直接删除文件吗?如果我能删除它,我会怎么做?
$ git rebase --abort
error: could not read '.git/rebase-apply/head-name': No such file or directory
echo "master" > .git/rebase-apply/head-name
$ git rebase --abort
error: could not read '.git/rebase-apply/onto': No such file or directory
$ echo "develop" > .git/rebase-apply/onto
$ git rebase --abort
error: could not read '.git/rebase-apply/head': No such file or directory
$ echo "develop" > .git/rebase-apply/head
在此之后,git rebase --abort工作。您在这些文件中放置的分支名称必须存在,在我的例子中,我不关心我的本地更改,但如果您这样做,显然要小心。
6条答案
按热度按时间brccelvz1#
在您尝试以下操作之前,请确保您先
stash
或commit
任何未提交的更改,否则您将无法挽回地丢失它们。然后试着做一个
git rebase --abort
。gcuhipw92#
Stash或commit对我不起作用,我只是创建了git抱怨的文件,直到它起作用!
在此之后,
git rebase --abort
工作。您在这些文件中放置的分支名称必须存在,在我的例子中,我不关心我的本地更改,但如果您这样做,显然要小心。0qx6xfy63#
DavidN的解决方案中止rebase是伟大只要你没有任何unstaged的变化,因为最后一个rebase去南方!
如果在尝试变基后编写代码,忽略
could not open file .git/rebase-merge/done
消息,那你最好的办法就是
保存本地更改,然后才中止变基。
我确信这是一个stackoverflow问题,那些急于解决问题而不考虑其含义的人,只会运行abort命令,并很快后悔。
wkyowqbh4#
我刚刚做了:
然后可以继续:
没有
needed.
bhmjp9jg5#
对于在Visual Studio Code中执行此操作的人,请关闭正在运行的终端/shell,然后运行
git rebase --quit
这样做将解决这个问题。
ktca8awb6#
错误信息现在应该更清楚了:
(因此使用add+commit或stash)
Git 2.43(Q4 2023)修复了“
rebase -i
“在命令被冲突更改中断时的行为。参见commit 203573b、commit 405509c、commit e032abd、commit f2b5f41、commit 9f67899、commit 206a78d、commit 36ac861(2023年9月6日)至Phillip Wood (
phillipwood
)。(由Junio C Hamano --
gitster
--合并于commit b995e78,2023年9月14日)rebase --continue
:命令失败后拒绝提交签字人:菲利普·伍德
如果一个提交因为会覆盖一个未被跟踪的文件而不能被选择,那么“
git rebase --continue
”(man)应该拒绝提交任何阶段性的更改,因为这个提交没有被选择。这是通过在消息文件丢失时拒绝提交来实现的。
选择消息文件进行此检查是因为只有在“
git rebase
”(man)停止以供用户解决合并冲突时才写入该文件。现有的命令在继续时拒绝提交阶段性更改,例如失败的“exec”,这依赖于检查
run_git_commit()
中是否缺少作者脚本。这将防止提交暂存的更改,但打印
在你说我不能承诺之前
这会让用户感到困惑,因此检查消息文件反而会改善用户体验。
更新了现有的exec失败后拒绝提交的测试,以检查我们是否不再打印关于缺少作者脚本的错误消息。