Sourcetree - 由于提交消息为空而中止提交,所有编辑器都不工作

时间:2021-06-22 22:26:13

标签: git atlassian-sourcetree

我正面临一个令人困惑的问题,在 Sourcetree 上,我在执行 Interactive Rebase 和执行 Ammend 提交时遇到错误。我得到的错误如图所示,error

我查看了此处的论坛,尝试了多种解决方案均无济于事。出现最多的是

git config --global core.editor "[your editor] -w"

我尝试过 VSCode 和 sublime,但没有成功。据我所知,按下“确定”后,外部编辑器应该会弹出;但是,它永远不会执行并转到附加图像中的错误。我还确认,只需在我的终端中输入“代码”即可启动 VSCode,因此看起来该路径有效。

寻找任何潜在的建议,将不胜感激!

2 个答案:

答案 0 :(得分:0)

屏幕截图中的显式命令包含:

git ... -c core.editor '<some path>' ... rebase -i ...

这意味着,在该命令的持续时间内,core.editor 的值将替换为 <some path>。由于它看起来也是 sequence.editor,我猜它是一个非交互式脚本,用于编辑 git rebase -i 的操作序列;出于某种原因,它在提供提交消息方面没有做正确的工作。

(顺便说一句:SO 更喜欢文本而不是屏幕截图,它使复制/粘贴更容易......)


要解决您的问题:

阅读 Sourcetree 的文档以了解该脚本的作用,或者自己从命令行运行 rebase -i

答案 1 :(得分:0)

这里的问题是你的编辑器配置不正确。

您在 core.editorsequence.editor 或其他指定编辑器的方式(如 EDITORVISUAL 环境变量)中指定的编辑器始终传递给壳。所使用的 shell 始终是 POSIX shell,因为它具有可移植性(在所有系统上的工作方式相同)并且功能强大,足以支持功能性和有效的脚本编写。

因此,您基本上需要假设您的编辑器将从 shell(例如,在 Git Bash 中)作为 EDITOR FILE 调用,其中 EDITOR 是编辑器值。在您使用屏幕截图显示的示例中,您有这样的内容:C:\Users\Chad\...\foo.exe。问题是反斜杠是 shell 所特有的,通常最终会被删除。

无论您指定什么编辑器,以及 SourceTree 在其调用的命令中指定的任何编辑器,都需要使用正斜杠而不是反斜杠,否则需要额外引用以防止 shell 删除反斜杠。我不知道你是如何告诉 SourceTree 这样做的,但这几乎肯定是这里的问题。