首页 > 解决方案 > 无法更改 git config 的 user.name,立即重置

问题描述

如果我做:

 git config --global user.name "My New Name"

它的工作,一小会儿。如果我这样做:

cat ~/.gitconfig

user.name我可以在属性中看到正确的值。

但是,只要我打开一个新的终端窗口或执行 git commit,旧名称就会被重置。

我正在使用 ssh。有一些缓存机制吗?

(注意这不是关于 GitHub 用户名,而是关于每个提交的作者姓名)

标签: gitgit-config

解决方案


文档FILES 部分git config显示了配置值的来源。

如果没有用 明确设置--file,则有四个 [或五个] 文件git config将在其中搜索配置选项:

  1. $(prefix)/etc/gitconfig
    系统范围的配置文件。
  2. $XDG_CONFIG_HOME/git/config
    第二个用户特定的配置文件。如果$XDG_CONFIG_HOME未设置或为空,$HOME/.config/git/config将使用。此文件中设置的任何单值变量都将被其中的任何内容覆盖。~/.gitconfig.如果您有时使用较旧版本的 Git,最好不要创建此文件,因为最近添加了对该文件的支持。
  3. ~/.gitconfig
    用户特定的配置文件。也称为“全局”配置文件。
  4. $GIT_DIR/config
    存储库特定的配置文件。
  5. $GIT_DIR/config.worktree
    extensions.worktreeConfig这是可选的,并且仅在中存在时才被 搜索$GIT_DIR/config

至于他们的优先级

文件按上面给出的顺序读取,最后找到的值优先于之前读取的值。当取多个值时,将使用所有文件中的键的所有值。

如果您使用git configor修改存储库的配置git config --local(这将修改$GIT_DIR/config,因此.git/config对于具有工作树的存储库或config在裸存储库中),并且通过git config --global(存储在~/.gitconfig)中的更改将在该存储库中不可见。

要进行快速健全性检查,请运行两个命令。

git config --global user.name
git config --local  user.name

推荐阅读