我正面临一个令人困惑的问题,在 Sourcetree 上,我在执行 Interactive Rebase 和执行 Ammend 提交时遇到错误。我得到的错误如图所示,error。
我查看了此处的论坛,尝试了多种解决方案均无济于事。出现最多的是
git config --global core.editor "[your editor] -w"
我尝试过 VSCode 和 sublime,但没有成功。据我所知,按下“确定”后,外部编辑器应该会弹出;但是,它永远不会执行并转到附加图像中的错误。我还确认,只需在我的终端中输入“代码”即可启动 VSCode,因此看起来该路径有效。
寻找任何潜在的建议,将不胜感激!
答案 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.editor
、sequence.editor
或其他指定编辑器的方式(如 EDITOR
和 VISUAL
环境变量)中指定的编辑器始终传递给壳。所使用的 shell 始终是 POSIX shell,因为它具有可移植性(在所有系统上的工作方式相同)并且功能强大,足以支持功能性和有效的脚本编写。
因此,您基本上需要假设您的编辑器将从 shell(例如,在 Git Bash 中)作为 EDITOR FILE
调用,其中 EDITOR
是编辑器值。在您使用屏幕截图显示的示例中,您有这样的内容:C:\Users\Chad\...\foo.exe
。问题是反斜杠是 shell 所特有的,通常最终会被删除。
无论您指定什么编辑器,以及 SourceTree 在其调用的命令中指定的任何编辑器,都需要使用正斜杠而不是反斜杠,否则需要额外引用以防止 shell 删除反斜杠。我不知道你是如何告诉 SourceTree 这样做的,但这几乎肯定是这里的问题。