为什么 Commit 使用 VSCode IDE 会弄乱 Commit 的作者信息?

Why Commit using VSCode IDE mess the Commit's Author info?

如果我输入:

git config --list

这是我的配置列表:

user.name=markzzz
user.email=markzzz@mymail.com
user.name=markzzz
user.email=markzzz@mymail.com

一旦我使用 VSCode IDE(1.37.1,在 Windows)进行了第一次提交,然后我看到了提交:

git log origin/master..master

妈的,这不是作者:

$ git log origin/master..master
commit d9a47958dasafasf0219888b251e324528de0b5f (HEAD -> master)
Author: paul <paul@anothermail.com>
Date:   Thu Aug 29 14:20:34 2019 +0200

    test

为什么? 在设置正确的作者之前,我首先需要这样做:

git config user.name "markzzz"
git config user.email "markzzz@mymail.com"

比使用 IDE 更有效。挺烦人的,有时候忘记了。

那些 "overwritten" 信息在哪里?它仅使用 VSCode IDE 执行此操作:如果我使用 bash 执行 git commit -m "test",它会按预期工作。

你应该试试下面的

$ git config --global user.name "Your Name"
$ git config --global user.email "youremail@domain.com"

引用https://www.git-tower.com/learn/git/faq/change-author-name-email

另一种可能性是某些 hook 正在修改正在进行的提交。

也就是说,检查 .git/hooks/ 是否有 pre-commit(不是 .sample)文件,如果存在,看看它做了什么。只需重命名它或将其移出 /hooks 即可使其永久失效。

一个简单的测试(如果不是这种情况则排除)是尝试

git commit -n -m "test"

因为 -n 暂时使这些挂钩失效。

为什么 VSCode 这样做?

没有。至少,它不应该,而且我从未见过它发生。

一定是哪里出错了。

如何调试这个?

首先,在命令面板 (Ctrl+Shift+P) 中,运行 "Git: Show Git Output"。当您执行提交并观察其输出时,请保持 window 打开。请注意,您在该输出中看到的是 运行 的每个命令及其 stderr 输出,但不是标准输出。

其次,尝试从 VSCode 内的终端 运行ning git commit:终端 → 新终端。看看是否重现了问题。从那里尝试 git config 命令等

第三,如果 none 揭示了问题,请尝试编写自己的 git 包装脚本并设置 git.path 设置(settings.json,或文件 → 首选项→ 设置 → Git) 指向它。让包装器脚本记录它所做的一切。