本节摘要:Git 的安装因操作系统而异,但"装完必须验证"这一步人人相同。本节覆盖 Windows、macOS、Linux 三平台的安装路径与常见坑,再讲清配置文件的三个级别(system/global/local)及其优先级,最后给出用户名、邮箱、默认编辑器、默认分支、别名、换行符六类初始配置的推荐值。
阅读完本节,你应当能够:
一个很反直觉的事实:大多数人第一次提交失败,不是不会提交,而是没装对 Git 或没配好身份。
装错的表现是"命令找不到"——你在终端敲 git,系统回一句"不是内部或外部命令"。这在 Windows 上最常见,本质是 Git 没进 PATH 环境变量。配错身份的表现更隐蔽——你提交成功了,但历史记录里作者的邮箱是空的或乱码,三个月后想找自己改的东西,搜作者名字搜不出来。
这两个坑都不难解,但容易在教程的"安装步骤"环节被一带而过。本节把它们讲透:安装部分给出三个平台的标准做法和验证命令,配置部分讲清"配置到底存在哪、谁覆盖谁",让你以后改配置时心里有数。
Git 是跨平台工具,三平台各有一条推荐路径:
Windows:从官网下载安装程序,双击运行。安装向导里有几个值得注意的选项——编辑器建议选你常用的(VS Code、Notepad++ 等);PATH 配置选"Git from the command line and also from 3rd-party software",这样 cmd 和 PowerShell 里都能用 git;换行符处理建议选"Checkout Windows-style, commit Unix-style line endings"。装完打开任意终端输入验证命令。
macOS:三种方式,按推荐度排序——装 Xcode Command Line Tools(最简单,系统会提示你安装);用 Homebrew 装最新版(brew install git);从官网下载安装包。前两种都能拿到能用的 Git,Homebrew 版本通常更新。
Linux:用发行版自带包管理器最省事。Debian/Ubuntu 系用 apt,Fedora/CentOS 系用 yum 或 dnf,Arch 系用 pacman。包管理装完直接进 PATH,几乎不用额外配置。
无论哪条路,装完都做同一件事——验证:
git --version
看到 git version 2.x.x 之类的输出即成功。如果提示找不到命令,回查 PATH 配置,Windows 用户优先检查安装时是否选了"from the command line"。
Git 的身份和行为由配置文件驱动。配置文件分三级,作用域从大到小:
| 级别 | 位置 | 作用范围 | 使用场景 |
|---|---|---|---|
| system | /etc/gitconfig 或 C:\ProgramData\Git\config | 系统所有用户所有仓库 | 管理员设默认 |
| global | ~/.gitconfig 或 ~/.config/git/config | 当前用户所有仓库 | 个人通用设置 |
| local | 仓库内 .git/config | 仅当前仓库 | 覆盖全局,按项目定制 |
优先级是本地 > 全局 > 系统:同一个配置项在多个级别都设了值,Git 用级别最高(即最具体)的那个。这条规则可以让你既保留个人邮箱,又在公司项目里覆盖成公司邮箱——在项目目录里设一次 local 即可,不影响其他项目。

生效方向永远是"后设置的高级别覆盖先设置的低级别",理解这条优先级链,你就知道改配置时该选哪个级别。
好奇的话可以直接翻开配置文件看。全局配置通常在 ~/.gitconfig(Windows 上是用户目录下的 .gitconfig),内容类似:
[user] name = 张三 email = zhangsan@example.com [core] editor = code --wait [init] defaultBranch = main [alias] st = status co = checkout
这些 [节] 与 键 = 值 的格式就是 Git 配置的底层语法。你可以用 git config 命令改,也可以直接编辑文件改——两种方式等价。知道文件长什么样有个实际好处:当你怀疑某个配置"怎么没生效"时,可以直接打开文件看它到底在不在、写没写错位置。比如把 [alias] 里的内容写到了 [user] 下面,命令查不到,文件却能一眼看出问题。
有位同事反馈:他在全局配了 user.email,但在某个仓库里提交记录还是显示旧邮箱。排查步骤是这样的:
git config user.email,显示的是旧邮箱——说明 local 级别覆盖了 global。git config --local --list,果然仓库的 .git/config 里残留了一条旧邮箱配置。git config --local --unset user.email 删掉这条残留,提交记录恢复正常。这个案例的价值在于演示了排查思路:先确认"生效值是什么",再查"是哪一级覆盖了它"。--list 配合级别前缀(--system/--global/--local)逐个查,基本三分钟内定位问题。
这两项决定提交记录里"作者"是谁,是所有配置里唯一必须做的:
git config --global user.name "你的名字" git config --global user.email "you@example.com"
用 --global 是因为绝大多数项目你要用同一个身份。检查是否生效:
git config --list # 列出所有生效配置 git config user.name # 查看单项
默认编辑器:Git 需要编辑多行文本(写提交信息、rebase 操作)时会调用它。配成 VS Code 注意加 --wait,Git 要等你关掉编辑器才继续:
git config --global core.editor "code --wait"
默认分支名:从 Git 2.28 起,新仓库默认分支可以改成 main(社区更推荐,避免 master 与奴隶制语义关联):
git config --global init.defaultBranch main
别名:把高频长命令缩成短命令。st=status、co=checkout、br=branch、ci=commit 是最经典的一套。后面第 5 章会专门展开。
换行符:Windows 用 CRLF,Unix 系用 LF,跨平台协作时不统一会处处报 diff。Windows 建议 true(提交时转 LF、检出时转 CRLF),Unix/macOS 建议 input(提交时转 LF、检出不动)。追求精确控制的项目可以关掉它、改用 .gitattributes 按文件类型指定。
| 配置 | Windows | Unix/macOS |
|---|---|---|
| core.autocrlf | true | input |
| 适用人群 | 大多数跨平台协作 | 纯 Unix 环境或团队有明确规范 |
| 代价 | 偶尔处理自动转换产生的意外 | 需自己管理行尾一致性 |
新装好 Git 后,建议依次跑一遍:
git config --global user.name "你的名字" git config --global user.email "you@example.com" git config --global init.defaultBranch main git config --global core.autocrlf true # Windows;Unix 用 input git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.lg "log --oneline --decorate --graph --all"
最后一条 lg 别名尤其值得:它让你用一个短命令看到带分支图的漂亮历史,后面 2.6 节会用上。
换行符(line ending)可能是跨平台协作里最烦人的"小事":Windows 的文件用 CRLF(回车+换行)结尾,Unix/macOS 用 LF(换行)。如果你在 Windows 上提交了一个 LF 项目里的文件,Git 可能在你"什么都没改"的情况下报告整个文件都变了——因为每一行的行尾都被 Git 认为是改动。
core.autocrlf 就是治这个的:设 true 时,Git 提交前把 CRLF 转成 LF,检出时再转回 CRLF,仓库里永远是 LF,工作区永远是 Windows 习惯的 CRLF,两边都舒服;设 input 时,提交前仍转 LF,但检出不动,适合纯 Unix 环境。项目里更精细的做法是写一个 .gitattributes 文件,按文件类型指定(比如图片永不转换),这属于进阶话题,第 5 章可以顺带展开。
对新手,记住结论即可:Windows 设 true,Unix 设 input,先跑起来再说。等遇到具体的行尾问题(比如某文件在 GitHub 上显示"整文件变更"),再回头研究 .gitattributes 也不迟——多数团队的前三年,靠 autocrlf 就已经解决了九成烦恼。
⚠️ 常见坑:
git config --list里同一个配置出现多次,不是坏了,而是不同级别都设了值,靠前的(实际生效的)优先。看到重复别慌。
💡 关键直觉:配置是"分账本"不是"总账本"——system 是公司总账,global 是你个人账本,local 是某本特定书页上的批注。改配置前先问一句"这个项目想单独处理吗",答案决定你该写哪本账。
"不配用户名邮箱,提交会失败吗?" 不会立即失败,但提交历史里作者字段会是 Git 猜的(通常来自系统用户名和机器名),且推送到远程时平台可能拒绝。一次配置,终身受益,别省这一步。
"为什么我在公司项目里改完邮箱,个人项目也跟着变了?" 因为全局配置对所有仓库生效。如果只是公司项目要用公司邮箱,在项目目录里用 local 级别单独设,不影响全局。
"命令行报错说 git 不是命令,怎么办?" 优先检查 PATH。Windows 用户重开终端(PATH 变更要在新终端生效)或检查安装选项;macOS/Linux 用户检查包是否真的装上。也可以用 which git 看 git 是否在可执行路径里。
"装完 Git 还需要装什么?" 命令行 Git 已足够完成本教程全部内容。IDE 的 Git 面板只是图形封装,底层还是这些命令。想更顺手的可以装个图形对比工具(如 Meld、KDiff3),3.4 节解决冲突时会提到。
装完配完,别急着开始写代码,花三分钟把下面这套自检跑完,能避免后面一大半"莫名其妙"的问题:
# 1. 验证安装与版本 git --version # 2. 确认身份已配置 git config user.name git config user.email # 3. 确认默认分支为 main(可选但推荐) git config init.defaultBranch # 4. 建一个临时仓库测试全流程 mkdir -p /tmp/git-selfcheck && cd /tmp/git-selfcheck git init echo ok > test.txt git add test.txt git commit -m "selfcheck" git log --oneline
四步全部正常输出,说明你的 Git 环境是健全的,可以放心进入下一节。这套自检本质上也是第 2.3 到 2.5 节的迷你预演——装好工具的同时,你已经把核心流程走过一遍了。
值得留意的是第 4 步的 git log --oneline 输出——如果你看到 (HEAD -> main) 或 (HEAD -> master) 的字样,说明分支指针已经在工作。这个"HEAD"会在第 3 章大放异彩,先混个脸熟。
Windows 用户最容易在安装向导里踩坑,集中提醒三处:
第一,PATH 选项别选错。三个选项中,"Use Git and optional Unix tools from the Command Prompt" 会把大量 Unix 工具塞进 PATH,可能和系统自带命令冲突(比如覆盖 find)。选中间的"Git from the command line and also from 3rd-party software"最稳妥。
第二,终端模拟器。安装向导会问用哪种终端,默认的 MinTTY 很好用,保持默认即可。如果你习惯在 PowerShell 或 Windows Terminal 里干活,这个选项不影响——它们都能调用 git。
第三,换行符选项想清楚再选。如果项目只在 Windows 内部协作,选"Checkout as-is, commit as-is"也可以;一旦要跟 Unix 系的人协作,就按前面表格的建议来。装完再改也行,改 core.autocrlf 配置即可,不用重装。
最后给一个长期有用的认知:安装是"一次性动作",配置是"持续演化的资产"。安装装完就结束了;配置则会随着你的习惯变化而不断生长——今天加了编辑器,明天加了别名,后天为某个项目设了特殊换行符规则。所以对待配置,要有"定期整理"的意识:
~/.gitconfig 拷过去,配置秒级迁移。这个习惯养成后,你在任何一台新电脑上都能十分钟内恢复自己顺手的 Git 环境。相比花半天重装重配,这是性价比极高的一笔投资。
git --version 验证。下一节进入三区模型——工作区、暂存区、本地仓库到底各存什么,为什么 Git 偏要拆出个"暂存区"来。