背景
当同时为不同的组织工作时,需要用到不同的身份。比如 GitHub 目录 ~/github/ 提交身份为 mygithub,在Gitee 目录 ~/gitee/ 提交身份为mygitee。使用过git的人都知道,如果不做额外的配置,只能使用一个身份进行代码提交。而这并不是我们想要的。
我们希望达到的效果是,在同一台开发机下,使用git在不同的组织项目下提交代码表现的身份会不一样。
例如:~/github/ 目录下放的都是GitHub 组织的项目,我提交代码时commit时的作者是 mygithub,~/gitee/ 目录下是 gitee 组织的项目,我提交代码时的作者是mygitee
系统配置及不生效原因分析
Git 使用一系列配置文件来保存你自定义的行为。
- 系统: 它首先会查找系统级的 /etc/gitconfig 文件,该文件含有系统里每位用户及他们所拥有的仓库的配置值。 如果你传递 --system 选项给 git config,它就会读写该文件。
- 全局:接下来 Git 会查找每个用户的 ~/.gitconfig 文件(或者 ~/.config/git/config 文件)。 你可以传递 --global 选项让 Git 读写该文件。
- 本地:最后 Git 会查找你正在操作的仓库所对应的 Git 目录下的配置文件(.git/config)。 这个文件中的值只对该仓库有效,它对应于向 git config 传递 --local 选项。
以上三个层次中每层的配置(系统、全局、本地)都会覆盖掉上一层次的配置,所以 .git/config 中的值会覆盖掉 /etc/git