先说明一下我的判断:很多人觉得“下载和安装 Git”就是去官网点两下“下一步”,跟装个播放器没区别。但我在实际带新人和帮同事排查问题的时候发现,真正浪费时间的从来不是安装本身,而是装完之后那一堆绕不开的配置——用户名邮箱、换行符、SSH Key、IDE 集成。这篇就把“下载安装 Git”这件事从头到尾拆开讲清楚,包括每个安装选项到底该选什么、为什么这么选,以及装完以后最容易踩的几个坑怎么填。建议你一边看一边操作,十分钟左右就能把环境收拾利索。
1. 下载之前,先把这几件事搞清楚
1.1 Git 到底解决什么问题
Git 是一个分布式版本控制系统。先说人话:它帮你记录项目里每个文件的每一次改动,并且支持你随时回到任意历史版本,还允许你拉出多条“平行世界”分支同时开发,最后再合并回来。团队协作时,大家互不干扰地改代码,最后通过 Git 合并到一起,谁改了什么一目了然。
跟游戏存档做个类比:你玩单机游戏,每过一个关卡就手动存一次档,打不过 BOSS 就回档重来;Git 就是给整个项目做存档,而且这个存档是每个开发者本地都有一份完整副本的。所谓“分布式”,就是不需要依赖一台中心服务器才能干活——即使远程仓库挂了,你本地的历史记录仍然是完整的,这对后续学习 Git 命令、理解分支合并都至关重要。
1.2 版本选择不是越新越好
Git 的版本号迭代很快,但作为日常使用者,你没有必要追最新版。我的建议是:只要能正常安装、命令不报错,选官网推荐的稳定版本就行。Windows 用户要注意区分 32 位和 64 位安装包,现在大部分电脑都是 64 位,但如果你还在用老机器,务必确认一下系统类型,在“设置—系统—关于”里能看到。
还有一个特别常见的坑:不要下载第三方“绿色版”“优化版”的 Git。这类版本要么内置了来路不明的修改,要么缺少关键组件,出了问题你很难排查。老老实实从官网下载,或者用我后面提到的国内镜像站下载,这是最稳妥的路线。
1.3 安装前需要做什么准备
安装 Git 之前,先把正在运行的相关工具关掉,尤其是编辑器(VS Code、IDEA 等)和终端。虽然安装过程一般不会强占这些进程,但安装器在配置 PATH 环境变量时,如果编辑器正在运行,可能导致新配置的环境变量无法被识别,装完以后还要重启电脑才能生效。
另外,确认一下磁盘空间。Git 本体很小,通常一两百兆就够了,但如果你的用户目录下已经积累了大量的项目文件、缓存,磁盘空间不足会导致安装中断。我遇到过一例安装到一半报错,最后发现是 C 盘只剩 200MB,清理后重装就好了。
2. 各平台下载与安装的完整实操
2.1 Windows 平台安装逐步讲解
Windows 是大多数初学者接触 Git 的第一站。访问 Git 官网(git-scm.com)下载页,选择对应的 Windows 版本即可。官网下载速度如果不太理想,可以使用国内镜像站,比如华为云、阿里云的 Git for Windows 镜像,路径和官网保持同步,版本一般也不会落后太多。
拿到 exe 安装包之后,双击运行。安装过程有几个关键选项需要认真对待:
第一个是Select Components(选择组件)。这里默认勾选了“Git Bash Here”和“Git GUI Here”,建议保留。这两个选项会给右键菜单加上“在此处打开 Git Bash”和“打开 Git GUI”的入口,日常使用非常方便。Git Bash 是 Windows 下最常用的 Git 命令行环境,它模拟了 Linux 终端操作体验,后面讲命令都会基于它。
第二个是Default editor(默认编辑器)。这里默认是 Vim,对新手极不友好——你随便敲一个git commit想写提交信息,结果被卡在 Vim 里不知道怎么退出。我建议如果你装了 VS Code,就直接在选项里选择 Visual Studio Code;如果没装,也别慌,可以先保持 Vim,后面用命令把默认编辑器改成 Notepad 或自己常用的编辑器。
第三个是Adjusting your PATH(调整 PATH 环境变量)。这一步几乎是最重要的。选项有三个:
- “Use Git from Git Bash only”:只在 Git Bash 里能用 Git 命令,普通 CMD 和 PowerShell 里用不了;
- “Git from the command line and also from 3rd-party software”:推荐选这个,它把 Git 加入系统 PATH,CMD、PowerShell、Git Bash 都能直接使用
git命令; - “Use Git and optional Unix tools from Command Prompt”:不仅加入 Git,还引入了一些 Unix 工具,不推荐,容易跟系统已有命令冲突。
第四个是Configuring the line ending conversions(配置换行符转换),默认选项是“Checkout Windows-style, commit Unix-style line endings”。这个选项的意思是:从仓库检出代码时转换成 Windows 的 CRLF 换行,提交回仓库时转换成 Unix 的 LF 换行。这个默认选择对 Windows 用户是合理的,建议直接保持默认,具体原因放到后面第 3 部分详细讲。
第五个是Use MinTTY(使用 MinTTY 终端),默认选择即可。MinTTY 比 Windows 默认终端好用不少,字体、复制粘贴体验都更好。后面的“Enable file system caching”“Enable Git Credential Manager”这些默认选项也保留不动。
安装完成之后,你可以通过“开始菜单—Git—Git Bash”打开终端,输入git --version确认安装是否成功。如果提示“git 不是内部或外部命令”,说明 PATH 部分没选对,后面第 6 部分会讲解决办法。
2.2 macOS 平台安装的三种方式
macOS 装 Git 有三种方式,按推荐程度排序:
第一种是用系统自带的命令行工具:在“终端”里执行xcode-select --install,系统会弹出安装提示。这个方式装的是 Apple 维护的 Git,版本会比官网稍旧一点,但对大多数人完全够用。好处是零配置、跟系统兼容性最好。
第二种是官网下载 dmg 安装包,直接拖拽安装。与 Windows 版一样,同样支持国内镜像站下载。
第三种是如果你安装了 Homebrew,直接在终端执行brew install git。这里有个细节:如果你之前已经通过其他方式装过 Git,brew 可能提示你已经存在,需要先brew uninstall git再重装,或者用brew link --overwrite git覆盖系统版本。Homebrew 装的 Git 一般是最新的,适合想用新特性的人。
2.3 Linux 平台安装只需一条命令
Linux 各个发行版安装 Git 非常简单,基本就是包管理器一条命令:
- Debian / Ubuntu 系:
sudo apt update && sudo apt install git(新版本 Ubuntu 也可以用sudo apt install git); - CentOS / RHEL 7 及以下:
sudo yum install git; - Fedora / RHEL 8+:
sudo dnf install git。
装完以后同样用git --version验证。Linux 上极少遇到 PATH 问题,因为包管理器会自动把可执行文件放到/usr/bin下。
2.4 装完先验证一下
不管哪个平台,装完之后第一件事就是在终端执行git --version,看到类似git version 2.39.2.windows.1的输出就说明安装成功。接着执行git help,如果能看到一堆命令说明也正常。
这里我多说一句:我见过有人装完 Git 之后,满心欢喜地打开 IDE,发现 IDE 里还是无法识别 Git。别着急下结论,先回到终端里确认 Git 命令是否能用。如果终端里能用、IDE 里不能用,那是 IDE 没配对路径的问题,跟安装本身无关,第 5 部分会专门讲怎么在 IDEA 里配置。
3. 安装完成后的三件必做配置
3.1 设置用户名和邮箱
这是最容易跳过、但影响最深远的配置。你的每一次提交记录里都会带上这里设置的用户名和邮箱,别人通过历史记录看到的就是这个信息。如果没设置或者乱设,提交记录里就会出现一串奇怪的字符串,后面想改历史的成本很高。
打开终端(Windows 用户打开 Git Bash),依次执行:
git config --global user.name "你的名字" git config --global user.email "你的邮箱"--global表示这台机器上的所有 Git 仓库都使用这个身份。如果你想针对某个项目单独设置身份,就进入那个项目目录,去掉--global重新执行一遍。
查看当前配置使用git config --list,可以确认是否设置成功。另外强烈建议顺手设置一下默认分支名,现在新仓库默认分支叫master,但很多平台已经默认使用main了。执行git config --global init.defaultBranch main,避免以后每次都要手动改。
3.2 处理换行符与编码的坑
Windows、macOS、Linux 的换行符不一样:Windows 用 CRLF(回车+换行),Unix 系用 LF(换行)。如果不对 Git 做换行符配置,就会出现“整个文件都被标记为修改”的诡异情况,比如同事在 Linux 上提交了一行代码,你在 Windows 上拉下来一看,Git 提示整个文件都冲突了。
Windows 用户建议执行:
git config --global core.autocrlf true这个配置的作用是:检出代码时自动转成 CRLF,提交时自动转回 LF。之前安装过程中那个默认选项就是这个意思,这里再明确一遍,目的就是让 Windows 和 Linux 同事之间互相切换项目时不至于被换行符折磨。
macOS 和 Linux 用户执行:
git config --global core.autocrlf inputinput的含义是提交时转成 LF,检出时保持原样。因为 Unix 系本来就是 LF 为主,不需要额外转换。
编码相关的坑也值得提前填掉。Git 默认对中文文件名会做转义,提交信息里的中文也可能出现乱码。执行下面两条命令能避免大部分中文问题:
git config --global core.quotepath false git config --global gui.encoding utf-8core.quotepath false以后,git status里显示中文文件名就是可读的中文,而不是一串\344\270\255...转义字符。
3.3 生成并配置 SSH Key
如果你打算跟 GitHub、Gitee、GitLab 这类代码托管平台交互,强烈建议配置 SSH Key。配好之后,git clone、git push、git pull都不需要反复输入账号密码,而且比 HTTPS 方式更稳定。
生成 SSH Key 的命令:
ssh-keygen -t ed25519 -C "你的邮箱"执行后一路回车即可。如果你电脑上的 SSH 版本比较老,不支持 ed25519 算法,可以换用:
ssh-keygen -t rsa -b 4096 -C "你的邮箱"默认情况下,公钥会生成在~/.ssh/id_ed25519.pub。用cat ~/.ssh/id_ed25519.pub把内容复制出来,然后登录你的代码托管平台,在“设置—SSH Keys”里粘贴保存。
之后测试连接:
ssh -T git@github.com如果看到 “You've successfully authenticated” 之类的提示,说明 SSH Key 配置成功。
如果你同时使用多个平台(比如 GitHub 和 Gitee),每个平台的 Key 最好分开生成。需要在~/.ssh/config文件里配置不同的别名,比如:
Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github Host gitee.com HostName gitee.com User git IdentityFile ~/.ssh/id_ed25519_gitee这里多说一句:我之前遇到过一种情况,生成的 Key 在 GitHub 上能用,但换到另一个平台就提示权限拒绝,排查半天发现是 Key 文件没有区分。生成多个 Key 的时候,ssh-keygen会让你输入保存路径,如果你全部一路回车,就会覆盖掉之前生成的 Key。这个细节很容易被忽略。
4. 验证安装并跑通第一条 Git 命令
4.1 用 git init 验证安装的有效性
配置完成后,找一个空目录,做一次最简单的验证。Windows 用户可以在某个工作目录下右键“Git Bash Here”,然后执行:
git init看到Initialized empty Git repository就说明 Git 正常工作。接着手动创建一个文本文件,比如test.txt,然后执行:
git add test.txt git commit -m "first commit"第一次提交完成后,再执行git log看提交记录,通常能看到你刚设置的用户名和邮箱。这套流程跑通,你的 Git 环境就算是真正可用了。
4.2 高频命令速查表
如果你刚开始学 Git,下面这张表直接收藏即可。我在带新人时,前期基本就是反复用这几条:
| 命令 | 作用 | 使用频率 |
|---|---|---|
git init | 初始化一个本地仓库 | 新建项目时 |
git status | 查看当前工作区状态 | 每天无数次 |
git add . | 把当前所有改动加入暂存区 | 提交前必用 |
git commit -m "说明" | 提交暂存区的改动 | 提交代码时 |
git log --oneline | 查看提交历史(简洁版) | 查记录时 |
git branch | 查看本地分支 | 分支操作前 |
git checkout 分支名 | 切换分支 | 开发中常用 |
git merge 分支名 | 合并指定分支到当前分支 | 合并代码时 |
git pull | 拉取远程更新并合并 | 多人在线协作时 |
git push | 推送本地提交到远程 | 代码同步时 |
这里提醒一个细节:git checkout既可以切换分支,也可以丢弃工作区修改,两个功能混在一起容易造成误操作。Git 在较新版本中推荐使用git switch 分支名来切换分支、git restore 文件名来丢弃修改,语义更清晰。如果你是新学的,可以直接从switch和restore开始。
4.3 让 Git 进入 IDE
命令行会用之后,你会发现绝大多数操作还是在 IDE 里完成的。IDEA、VS Code、Eclipse 都已经内置了 Git 支持,但首次使用时要让 IDE 找到 Git 可执行文件。以 IDEA 为例,打开菜单“File—Settings—Version Control—Git”,在 “Path to Git executable” 里填上 Git 的安装路径。Windows 上通常是C:\Program Files\Git\bin\git.exe,IDEA 一般会自动识别,如果没识别就手动浏览选择。
填好之后,IDEA 顶部菜单栏会出现 Git 相关的图标,右下角也会显示当前分支。如果你用 VS Code,左侧竖条里的“源代码管理器”图标就是 Git 面板,终端里能用 Git,VS Code 就基本不需要额外配置。
这里顺便回应一下热搜词里频繁出现的需求:IDEA 创建新项目拉取 Git。操作流程其实是这样的:打开 IDEA,选择“File—New—Project from Version Control”,粘贴远程仓库的 HTTPS 或 SSH 地址,点 Clone 就能把代码拉下来。如果是第一次用,IDEA 会要求你填账号或选择 SSH Key,填对一次之后基本都能记住凭证。
5. 从 IDE 拉取代码到完成第一次分支合并
5.1 在 IDEA 里配好 Git 可执行文件
继续围绕“idea 创建新项目拉取 git”这个场景来说。第一步还是确认 IDEA 能连接到 Git。打开“Settings—Version Control—Git”,看右侧的 “Path to Git executable” 是否显示版本号,如果显示,说明连接成功。这一步很关键,因为有时候你代码拉不下来,不是克隆地址的问题,而是 IDEA 根本不知道 Git 命令在哪里。
然后准备一个远程仓库地址。仓库源可以是 GitHub、Gitee、GitLab,也可以是自己公司内网搭建的 Git 服务。作为演示,你可以在任意托管平台新建一个空仓库,拿到仓库地址。
回到 IDEA,选择“File—New—Project from Version Control”,会弹出一个输入框。这里填 HTTPS 地址就直接拉取,填 SSH 地址则要求你提前配好 SSH Key。我给你的建议是:能用 HTTPS 就先 HTTPS,等后面熟悉了再切换 SSH,减少前期折腾。录入地址后点击 Clone,等进度条走完,项目就出现在本地了。
拉取下来之后,还需要给项目配置 SDK 和构建工具。这一步经常让新人困惑——明明代码都拉下来了,为什么 IDEA 还报错?因为 Git 只负责把代码文件拉下来,不负责安装 JDK、Maven 或 Gradle。打开“File—Project Structure—Project”,把 SDK 选到本机已有的 JDK 版本;如果是 Maven 项目,在“Settings—Build Tools—Maven”里设置好 Maven 主目录和仓库路径,依赖会自动下载。
5.2 远程仓库拉取的两种方式
“拉取 Git 代码”其实有两个层面的意思:第一次把整个项目拉下来叫clone,之后同步更新叫pull。两者很容易混淆。
clone只有一次,发生在项目还不存在于本地的时候。执行git clone 仓库地址,会把整个仓库历史完整复制到当前目录。
pull是日常更新。已经 clone 过之后,每次需要拿别人新提交的代码,就执行git pull,它等价于先git fetch(把远程最新提交下载到本地)再git merge(合并到当前分支)。在多人在同一个分支上协作时,每天上班第一件事拉一下pull,能减少很多冲突。
在 IDEA 里,clone 之后就进入了正常的版本管理界面。右下角分支名称旁边有一个刷新图标,点一下就是拉取远程更新。提交代码则是选中要提交的文件,按快捷键Ctrl+K填写提交信息,再Ctrl+Shift+K推送远程。
5.3 第一次分支合并怎么操作
分支合并是 Git 里最核心也最容易出问题的一个操作。这里我结合一个非常常见的场景来讲:你有一个主分支main,现在要开发一个新功能,于是创建了一个分支feature/login。功能开发完,想把代码合并回main。
第一步,在 IDEA 右下角点击当前分支名,选择“New Branch”,输入feature/login,创建完成之后自动切换到这个分支。
第二步,在feature/login分支上正常提交代码,多提交几次都可以。
第三步,切回main分支,再点击当前分支名,选择“Merge into Current”,在弹出的列表里选中feature/login。IDEA 会执行合并,如果没有任何冲突,代码直接就被合并过来了;如果有冲突,会列出冲突文件,你需要逐个打开处理。
冲突的格式是这样的:文件里会有一段<<<<<<< HEAD和=======>>>>>>> feature/login包裹的区域,分别代表两个分支的代码。你要做的就是改成一个最终版本,然后把冲突标记删除。处理完后,在 IDEA 的合并弹窗里标记为已解决,提交合并结果。
这里补充一个命令行对应的操作,方便你在没有 IDE 的环境中处理:
git checkout main git merge feature/login命令行合并时冲突提示会直接显示在终端里,你会看到CONFLICT (content)的字样。处理方式和 IDEA 完全一样,只是要在编辑器里手动改冲突区域,改完再执行git add和git commit完成合并收尾。
6. 新手最容易踩的坑及排查实录
6.1 提示“git 不是内部或外部命令”
这个报错基本只在 Windows 出现。原因通常只有一个:安装时没把 Git 加入 PATH 环境变量,或者在修改 PATH 时不小心把 Git 路径删了。
解决办法有两条路:如果是安装时没选对,那重新运行安装包,在 “Adjusting your PATH” 步骤选择第二个选项“Git from the command line and also from 3rd-party software”,然后一路下一步完成修复。如果不方便重装,那就手动添加环境变量:右键“此电脑—属性—高级系统设置—环境变量”,在系统变量 Path 中新建一条,把 Git 的 bin 目录(如C:\Program Files\Git\bin)加进去。改完后重新打开终端。
6.2 安装完出现 SSL certificate problem
操作任何一个远程仓库时,如果报错包含SSL certificate problem: unable to get local issuer certificate,通常是本机缺少可用的 CA 证书,或者系统时间和真实时间偏差太大。先检查系统时间,这个原因经常被忽略——如果你的电脑时间不对,TLS 证书验证一定会失败。
时间没问题,再考虑升级 Git 版本,老版本的 Git 自带的证书库不完整。实在着急用,可以临时执行git config --global http.sslVerify false关闭 SSL 验证,但请注意:这会降低安全性,只在确定网络环境可信的前提下临时用,解决后要执行git config --global http.sslVerify true恢复。
6.3 中文文件名和提交信息乱码
在 Windows 的 Git Bash 里,Git 默认显示中文文件名是一串转义编码,比如"\346\265\213\350\257\225.txt"。这不是文件坏了,是 Git 把非 ASCII 字符转义了。执行一条命令git config --global core.quotepath false就能解决,让 Git 直接显示中文。
提交信息乱码则是另一个原因:Git 默认把提交信息按UTF-8解析,但如果终端区域设置不是 UTF-8,就可能显示乱码。Windows 上建议把 Git Bash 的字符集设为 UTF-8,方法是在 Git Bash 窗口右键“Options—Text—Locale”里选择zh_CN,Character set 选择UTF-8。如果还不生效,就配置git config --global i18n.commitencoding utf-8。
6.4 下载慢或下载中断
每次说到 Git 下载,都有人因为官网访问慢或者下载到一半中断而放弃。解决方案是使用国内镜像站。华为云镜像、阿里云镜像、腾讯软件源都提供了Git for Windows和 macOS 安装包的同步下载,速度稳定很多。注意选择跟官网一致的版本号,避免安装包版本混乱。
6.5 默认分支名总是 master
新初始化的仓库默认分支是master,但现在主流平台都默认main。与其每次新建仓库都手动改,不如一劳永逸地配置:
git config --global init.defaultBranch main这样以后执行git init创建的仓库默认分支就是main,跟 GitHub 等平台保持一致,省去很多不必要的分支改名麻烦。
7. 装完 Git 之后我最后悔没早知道的几件事
最后基于我个人这些年踩过的坑,补充几个装完 Git 之后值得尽早做的事。
第一,把命令别名配置好。Git 支持自定义命令别名,比如git config --global alias.st status、git config --global alias.lg "log --oneline --graph --all"。lg这个别名配合--graph参数,可以很直观地看到分支合并的关系图,比裸敲git log好用太多。我一开始用原生命令敲了很久,后来配置了别名就再也回不去了。
第二,重视.gitignore文件。很多新人装好 Git 就兴奋地提交代码,结果把target、node_modules、.idea这些目录也提交了上去。提交之后清理非常麻烦。建议新建仓库第一件事就是写好.gitignore,把编译产物、IDE 配置、系统文件都排除掉。Java 项目参考 IDEA 的模板,Node 项目用 GitHub 官方提供的 Node 模板,基本够用。
第三,每次提交信息别乱写。我见过很多仓库里的提交信息是“111”“update”“aaa”,过两个月回头看,完全不知道当初为什么改。提交信息写得稍微具体一点,比如“修复登录页面在 Safari 下的样式错位”,对以后追溯历史记录帮助巨大。我个人的习惯是:一个提交只做一件事,提交信息尽量说清楚原因,而不是只写“改了什么文件”。
下载安装 Git 本身只是个起点,真正让你受益的是装完之后养成的这些配置习惯和操作规范。把这些基础打好,后面学习分支管理、冲突解决、团队协作工作流都会顺畅很多。按照我在第 2 到第 5 部分的步骤走完,你应该已经有了一个顺手、稳定的 Git 环境,接下来就放心大胆地多创建几个仓库试试命令吧。