Git的问题 - rebase / squash

33

我正在尝试在 git 存储库中压缩一些提交记录。

> git rebase -i HEAD~3

成功地对 refs/heads/staging 进行了变基并更新了它。

打开一个名为 git-rebase-todo 的文件:

pick a2f3467 Require statement incorrect
pick c41212e Require file in environment
pick 2743221 This should work

# Rebase c5f42f3..2743221 onto c5f42f3
# ..........

我尝试将底部两个提交从pick更改为squash。我保存文件,但出现以下错误:

无法保存~/Documents/code/myapp/.git/rebase-emrge/git-rebase-todo


1
看起来更像是文件系统的错误,而不是 Git 的错误。如果您尝试手动在该位置创建文件会发生什么? - Ben
你使用哪个编辑器? - poke
@poke 我正在使用SublimeText2 - 没有什么花哨的东西(我认为!) - Brandon
@Ben,.git 文件夹中没有 rebase-merge 文件夹……这正常吗?是 ST2 加载提交的方式有问题吗? - Brandon
1
我并没有特别推荐某个编辑器。只是试图缩小问题范围,想知道是否是编辑器而不是交互式变基的问题。您可以使用 git config core.editor 命令更改默认编辑器。我认为首先要检查的是编辑器是否打开,文件夹是否存在以及是否可以向其中写入文件。 - Ben
显示剩余6条评论
3个回答

62

问题是当Sublime Text 2 启动时,它不会阻塞并立即返回。Git 然后认为你已经完成了文件的编辑并执行了变基操作。这就是为什么你会看到

Successfully rebased and updated refs/heads/staging

在你甚至编辑文件之前,使用 subl 命令,该命令专为这种用途设计。 Github 帮助文档 告诉你如何进行配置。

git config --global core.editor "subl -n -w"

1
这个操作立即停止了应用rebase命令并使文件可以再次保存。不幸的是,在保存之后它仍然无法继续执行。 - Andi Giga
好的,我找到了解决方案,你不仅需要保存文件,编辑器还需要在之后关闭。抱歉,我不知道这一点,这里有更多关于这个主题的信息: https://dev59.com/MmEh5IYBdhLWcg3wPhdT - Andi Giga

1
在我的经验中,该问题是由于用户权限引起的。
如果您在保存文件时收到“找不到文件“~/../../git-rebase-todo””错误,请尝试以sudo身份运行它。
sudo git rebase -i HEAD~3

请注意,这可能会更改任何受影响文件的所有者。

0

我在使用 VS Code 时遇到了类似的问题,你可以尝试在终端中执行以下命令:

git config --global core.editor "code -n --wait"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接