简介
在这个实验中,你将学习如何检查 Git 仓库中的特定配置设置。我们将首先使用 git config
命令查询单个设置,了解如何获取全局用户名和电子邮件等值。
接下来,我们将探讨 Git 配置的不同级别,特别关注全局设置和本地设置之间的区别。你将学习如何列出两个级别上的所有配置,以了解它们是如何应用的,以及本地设置如何覆盖全局设置。最后,我们将介绍如何处理请求的配置值可能缺失的情况。
在这个实验中,你将学习如何检查 Git 仓库中的特定配置设置。我们将首先使用 git config
命令查询单个设置,了解如何获取全局用户名和电子邮件等值。
接下来,我们将探讨 Git 配置的不同级别,特别关注全局设置和本地设置之间的区别。你将学习如何列出两个级别上的所有配置,以了解它们是如何应用的,以及本地设置如何覆盖全局设置。最后,我们将介绍如何处理请求的配置值可能缺失的情况。
git config
查询设置在这一步中,你将学习如何使用 git config
命令查询 Git 设置。Git 使用配置文件来存储控制其行为的设置。这些设置可以全局应用(应用于你所有的 Git 仓库),也可以本地应用(应用于特定的仓库)。
首先,让我们检查一个全局设置。在设置部分,你已经全局配置了你的姓名和电子邮件。你可以使用 --global
标志和设置名称 user.name
来查询你的全局用户名:
git config --global user.name
你应该会看到你在设置中配置的姓名:
Jane Doe
现在,让我们查询你的全局用户电子邮件:
git config --global user.email
你应该会看到你配置的电子邮件:
[email protected]
这些命令会显示 Git 在这个系统上所有仓库的提交中默认使用的值。了解如何查询这些设置是管理你的 Git 配置的第一步。
在这一步中,你将探索 Git 全局配置和本地配置之间的区别,以及如何查看所有设置。
Git 有不同级别的配置。最常见的有:
~/.gitconfig
中。.git/config
中。本地配置会覆盖全局配置,而全局配置会覆盖系统配置。
要查看所有全局设置,你可以使用 --global --list
标志:
git config --global --list
你应该会看到类似以下的输出,显示你设置的 user.name
、user.email
和 init.defaultBranch
:
user.name=Jane Doe
[email protected]
init.defaultBranch=master
现在,让我们在 my-time-machine
仓库中创建一个本地配置。回到仓库目录:
cd ~/project/my-time-machine
你可以设置一个仅适用于此特定仓库的本地用户名。让我们使用一个不同的名称:
git config user.name "Time Traveler"
注意,这次你没有使用 --global
标志。这告诉 Git 为当前仓库本地设置配置。
现在,让我们使用 --local --list
查看此仓库的本地配置:
git config --local --list
你应该会看到你刚刚设置的本地用户名:
user.name=Time Traveler
最后,让我们查看适用于当前仓库的 所有 配置,包括本地和全局设置。Git 将首先显示本地设置,因为它们具有更高的优先级:
git config --list
输出将同时显示本地和全局设置。注意,user.name
显示为 "Time Traveler"(本地设置),而 user.email
显示为 "[email protected]"(全局设置,因为你没有设置本地电子邮件):
user.name=Time Traveler
[email protected]
init.defaultBranch=master
这展示了 Git 如何优先使用本地配置而非全局配置。
在这一步中,你将了解当你尝试查询一个不存在的 Git 配置值时会发生什么,以及 Git 如何处理这种情况。
有时,你可能会尝试查询一个尚未配置的设置,无论是全局设置还是本地设置。让我们尝试查询一个假设的设置 core.editor
,这个设置我们还没有显式设置:
git config core.editor
由于我们没有在 my-time-machine
仓库中设置本地的 core.editor
,Git 会查找全局的 core.editor
。如果全局也没有设置(在这个环境中就是这种情况),Git 会以错误状态退出,并且如果系统范围内没有配置默认值,它将不输出任何内容;如果配置了默认值,则会输出该默认值。根据系统的默认配置,你可能会看到类似以下的输出,或者根本没有输出:
重要的是,Git 在本地或全局配置文件中没有找到 core.editor
的特定值。
现在,让我们尝试查询一个我们知道全局存在但本地不存在的设置,比如 user.email
:
git config user.email
尽管我们处于设置了本地 user.name
的 my-time-machine
目录中,但我们没有设置本地的 user.email
。Git 会首先查找本地的 user.email
。由于没有找到,它会接着查找全局的 user.email
并返回该值:
[email protected]
这证实了当本地配置缺失时,Git 会回退到全局配置。
理解 Git 如何搜索配置值(先本地,再全局,最后系统)对于有效排查问题和管理你的 Git 环境至关重要。
在本次实验中,你学习了如何使用 git config
命令来查询 Git 设置。你首先使用 --global
标志查询了特定的全局设置,如 user.name
和 user.email
。这展示了如何获取适用于系统上所有仓库的单个配置值。
接着,你探索了 Git 配置的不同级别:系统级别、全局级别和本地级别,并了解到本地设置会覆盖全局设置。你学习了如何使用 git config --global --list
列出所有全局设置,以查看应用于你用户账户的完整配置。这让你全面了解了 Git 使用的默认设置。