如何检查 Git 仓库是否有特定的配置设置

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何检查 Git 仓库中的特定配置设置。我们将首先使用 git config 命令查询单个设置,了解如何获取全局用户名和电子邮件等值。

接下来,我们将探讨 Git 配置的不同级别,特别关注全局设置和本地设置之间的区别。你将学习如何列出两个级别上的所有配置,以了解它们是如何应用的,以及本地设置如何覆盖全局设置。最后,我们将介绍如何处理请求的配置值可能缺失的情况。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git(("Git")) -.-> git/GitHubIntegrationToolsGroup(["GitHub Integration Tools"]) git/SetupandConfigGroup -.-> git/config("Set Configurations") git/GitHubIntegrationToolsGroup -.-> git/cli_config("Configure CLI") subgraph Lab Skills git/config -.-> lab-560083{{"如何检查 Git 仓库是否有特定的配置设置"}} git/cli_config -.-> lab-560083{{"如何检查 Git 仓库是否有特定的配置设置"}} end

使用 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.nameuser.emailinit.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.namemy-time-machine 目录中,但我们没有设置本地的 user.email。Git 会首先查找本地的 user.email。由于没有找到,它会接着查找全局的 user.email 并返回该值:

[email protected]

这证实了当本地配置缺失时,Git 会回退到全局配置。

理解 Git 如何搜索配置值(先本地,再全局,最后系统)对于有效排查问题和管理你的 Git 环境至关重要。

总结

在本次实验中,你学习了如何使用 git config 命令来查询 Git 设置。你首先使用 --global 标志查询了特定的全局设置,如 user.nameuser.email。这展示了如何获取适用于系统上所有仓库的单个配置值。

接着,你探索了 Git 配置的不同级别:系统级别、全局级别和本地级别,并了解到本地设置会覆盖全局设置。你学习了如何使用 git config --global --list 列出所有全局设置,以查看应用于你用户账户的完整配置。这让你全面了解了 Git 使用的默认设置。