)
first-contributions 项目实战Git 用户身份配置完全指南全局、仓库级、命令行三种方式与优先级详解【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions导读本文以 first-contributions 开源教学仓库README.md中的 Git 配置指南 为主体系统讲解初次提交时如何正确设置user.name与user.email覆盖全局配置、仓库级配置、命令行临时配置三种方式及其优先级规则并延伸讲解core.editor、commit.template、color.ui等常用配置项。读完本文你将彻底理解 Git 身份配置的底层机制能够在 fork→clone→branch→commit→push→Pull Request 的完整贡献流程中顺利通过第一道关卡不再被 Please tell me who you are 报错卡住。一、问题场景第一次git commit时的身份提示在参与 first-contributions 项目的第一次贡献流程中当你按照 README.md 的指引完成了 fork、clone、创建分支、修改 Contributors.md 并执行git add之后下一步就是提交更改。然而很多初学者在第一次执行git commit时会看到这样一段报错$ git commit *** Please tell me who you are. Rode: git config --global user.email youexample.com git config --global user.name Your Name Para definir a identidade padrão da sua conta. Omita --global para definir a identidade apenas nesse repositório以上为葡萄牙语版本的提示原文对应英文原版见 docs/additional-material/git_workflow_scenarios/configuring-git.md。为什么会这样Git 在创建每一个 commit 时都必须知道谁提交了这次更改。这是 Git 分布式协作设计的核心要求当多人共同维护一个项目时必须能够清楚地看到是谁、在什么时间、修改了哪个文件的哪些部分。因此Git 要求每个提交都必须绑定一个名字user.name和一个邮箱user.email。第一次安装 Git 后系统里并没有这两项配置所以 Git 会拦截git commit并给出提示。值得注意的是本仓库中的安装文档同样把身份配置列为安装后的必做步骤——例如 Ubuntu 安装指南 和 Arch 安装指南 在安装完成后都会引导执行git config --global user.name与git config --global user.email可见身份配置是所有 Git 工作流的第一步。二、提供身份信息的多种方式Git 提供了多种方式来向git commit提供邮箱和用户名下面逐一展开讲解。1. 全局配置Global Config适用场景这是最推荐、最常用的方式。全局配置存储在你的用户主目录中对你系统上所有仓库生效覆盖绝大多数使用场景。命令格式$ git config --global variable name value配置用户信息$ git config --global user.email youexample.com $ git config --global user.name Your Name执行后Git 会将这些键值对写入全局配置文件Linux 下通常为~/.gitconfig。从该时刻起你在任何仓库中新建的 commit 都会默认使用这组身份信息直到在更低优先级的作用域中被覆盖。2. 仓库级配置Repository Config适用场景正如其名这类配置仅作用于当前仓库。例如你在 first-contributions 项目上以个人邮箱贡献开源代码但同一台机器上还有一个工作相关的项目需要使用公司邮箱提交就可以在该仓库内单独覆盖身份。命令格式与全局配置写法相同只是省略--global标志$ git config variable name value配置用户信息$ git config user.email youalternate.com $ git config user.name Your Name仓库级配置会写入当前仓库的.git/config文件只影响这一个仓库不影响其他项目。3. 命令行配置Command-line Config适用场景这类配置只对当前这一条命令生效是临时性的、最精细的控制方式。例如只想在某一次 commit 中使用特定身份而不希望写入任何配置文件。命令格式所有 Git 命令都可以在动作动词如commit、push之前使用-c参数传入临时配置$ git -c variable-1value -c variable-2value command示例注意-c参数使用keyvalue的等号形式且位于commit之前$ git -c user.nameYour Name -c user.emailyouexample.com commit -m Your commit message这种方式非常适合一次性操作配置值只存在于本次命令进程中命令执行完毕后即被丢弃不会污染任何配置文件。4. 三种方式的优先级这是本文最关键的结论命令行配置command-line 仓库级配置repository 全局配置global。优先级顺序意味着如果同一个变量例如user.email同时出现在命令行参数和全局配置中Git 将采用命令行中的值执行本次操作。这一优先级规则保证了三个作用域能够协同工作——全局提供默认值、仓库级针对单个项目覆盖、命令行针对单次操作覆盖层层递进互不干扰。三、超越用户信息更多常用 Git 配置项身份配置只是git config的入门。Git 的配置体系非常庞大这里介绍三个与日常协作尤其是在向开源项目提交 commit 时直接相关的常用配置项core.editor— 指定用于编写提交信息commit message等内容的编辑器名称。当执行不带-m参数的git commit时Git 会打开该编辑器供你撰写提交说明。例如设置为vim、nano或code --wait。commit.template— 指定系统中的一个文件作为初始提交模板。设置后每次打开提交编辑器时Git 会预先将模板内容填充进去帮助团队统一 commit message 的书写格式。color.ui— 布尔值true/false/auto用于控制 Git 输出是否使用颜色。开启后git status、git diff等命令的输出将以彩色高亮显示极大提升可读性对初学者判断文件状态已修改、已暂存、冲突等非常直观。设置方式同样统一$ git config --global core.editor code --wait $ git config --global commit.template ~/.git-commit-template.txt $ git config --global color.ui true四、在 first-contributions 贡献流程中的应用结合本仓库的完整贡献流程README.md来看身份配置是整条链路的前提Fork 本仓库点击页面顶部的 Fork 按钮在你的账户下生成副本。Clone 仓库git clone 你的 fork 地址将仓库克隆到本地。创建分支git switch -c your-new-branch-name旧版 Git 可用git checkout -b替代详见 README.md。修改文件并提交编辑 Contributors.md 添加你的名字后执行git add Contributors.md与git commit -m Add your-name to Contributors list——执行这一步之前正是需要完成本文所述身份配置的时机。推送与提 PRgit push -u origin your-branch-name然后在 GitHub 上发起 Pull Request。可以看到git commit是流程中无法绕开的环节而正确的身份配置决定了 commit 能否创建成功、以及最终在贡献历史中显示的作者信息是否正确。此外仓库还提供了多种语言的教学文档例如葡萄牙语版本 docs/translations/README.pt_br.md、本文档的 葡萄牙语版本 与 中文版本以及 Git 工作流场景合集 中的其他进阶技巧如 修改提交、保持 fork 同步、解决合并冲突读者可按需查阅。五、小结与自查清单掌握 Git 身份配置后请用以下清单快速自检场景推荐方式命令所有仓库统一身份全局配置git config --global user.email/user.name仅当前仓库使用特定身份仓库级配置git config user.email/user.name仅单次命令使用临时身份命令行配置git -c user.name... -c user.email... commit ...优先级规则始终是命令行 仓库级 全局。配置完成后可用git config --list查看当前生效的全部配置用git config user.name单独查看某项取值确保提交前的身份信息准确无误。【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考