如何让git commit执行$GIT_EDITOR时保持工作目录为当前目录?
解决Git Commit时编辑器工作目录被修改的问题
Git 默认会把编辑器的工作目录切换到提交信息临时文件所在的目录,要保持为执行git commit时的原始 Shell 目录,有两种简单的实现方式:
方法1:自定义编辑器包装脚本
- 创建一个名为
git-editor-wrapper.sh的脚本,内容如下:
#!/bin/sh # 切换回执行git commit时的原始工作目录 cd "$GIT_COMMIT_WORKING_DIR" || exit # 启动默认编辑器并传递Git传入的文件参数 exec "$EDITOR" "$@"
- 给脚本添加执行权限:
chmod +x git-editor-wrapper.sh
- 将Git的默认编辑器设置为这个脚本(替换成你的脚本实际路径):
git config --global core.editor '/full/path/to/git-editor-wrapper.sh'
方法2:直接通过Git配置命令实现
无需单独写脚本,直接在Git配置里指定带目录切换的命令:
git config --global core.editor 'cd "$GIT_COMMIT_WORKING_DIR" && "$EDITOR"'
如果你的默认编辑器带有启动参数(比如vim -n),可以直接调整命令:
git config --global core.editor 'cd "$GIT_COMMIT_WORKING_DIR" && vim -n'
验证方式
执行git commit打开编辑器后,在编辑器内查看当前工作目录(比如Vim中输入:pwd,VS Code中打开终端查看),应该显示你执行git commit时的原始目录。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

