1. 安装之前先把环境理清楚
Git这个工具,说简单也简单,就是一个分布式版本控制软件;说复杂也复杂,很多老手用了好几年,面对换行符报错、凭据反复失效、SSH反复要密码这些破事依然会头疼。所以在动手安装之前,我建议你先花两分钟把下面三件事确认一遍,能省掉后面一大半的折腾。
第一件事,确认操作系统的位数。Windows用户右键“此电脑”选“属性”,在“系统类型”里看是64位还是32位。十年前的电脑基本都是64位了,但万一你手头有旧设备,下载的时候选错版本,安装过程会直接报“不是有效的Win32应用程序”。macOS用户主要看芯片类型,Apple Silicon(M1/M2/M3)和Intel芯片在部分工具链上会有区别,但Git官方安装包对这两种芯片都有对应的版本。Linux用户只需要知道自己用的什么包管理器,Debian/Ubuntu系用apt,CentOS/RHEL/Fedora用dnf或yum,后面会分别说。
第二件事,检查系统里是不是已经有Git了。很多人装到一半提示“文件已存在”或者装完发现命令行里跑的还是旧版本,就是因为环境里已经有过一套。Windows可以在命令行输入git --version,能输出版本号就说明已经有。macOS要特别注意,系统自带了Xcode Command Line Tools里的Git,版本可能比较老,你新装的Git要配置好PATH才能覆盖掉旧的。Linux则是各个发行版可能预装或未预装,先检查再动手最稳。
第三件事,想清楚你要不要装GUI客户端。Git本身是纯命令行工具,但很多人习惯配一个图形界面,比如说SourceTree、TortoiseGit(昵称“小乌龟”)、GitHub Desktop。这类工具通常会自带一个Git核心,或者要求你单独先装Git。我的建议是,不管用不用GUI,都先把Git命令行装好。因为GUI只是壳,底层调用的还是Git命令,你理解了命令行,再去看GUI的操作就一目了然,反过来直接从GUI入手,出了问题往往一脸懵。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 三个主流平台的安装细节
2.1 Windows:安装选项逐个说清楚
Windows下安装Git,最省心的方式就是去官网(git-scm.com)下载安装包。注意区分两个下载项:一个是“64-bit Git for Windows Setup”,一个是“32-bit Git for Windows Setup”,按前面查到的系统位数选就行。官网偶尔会有“Portable”、“MinGit”这类变体,日常使用不建议选,标准安装包功能最全。
下载完成后双击运行,一路Next也不是不行,但有几步建议别偷懒。我按安装向导的先后顺序把重要选项过一遍。
第一步选择安装路径。默认是C:\Program Files\Git,我没改过这个路径,因为它带空格,万一你手动改成奇奇怪怪的目录,后面某些IDE集成时反而会出问题。如果C盘空间紧张,可以改到D盘,但目录名字务必不要带中文和空格。
第二步选择组件。默认会勾选“Additional icons”、“Windows Explorer integration”、“Git Bash Here”、“Git GUI Here”这些。重点说两个容易被忽略的:一个是“Associate .git* configuration files with the default text editor”,这个是让.gitconfig这类文件关联到文本编辑器,建议勾上;另一个是“Scalar”或“Git LFS”这类附加组件,建议一并安装。Git LFS用来管理大文件很有用,很多项目里已经用到了。早期版本里还有个“Git Credential Manager”选项,在新版本里已经变成默认启用,后面配置免密时会用到。
第三步选择默认编辑器。安装向导默认是Vim。如果你是新手,强烈建议选“Use the Nano editor by default”或者在下拉框里选VS Code。Vim对新手极其不友好,你哪天提交代码忘写提交信息,被弹进Vim界面,不知道按i进入编辑、按:wq保存退出,直接卡死在那个黑窗口里,非常崩溃。
第四步调整PATH环境变量。这里有两个选项:“Git from the command line and also from 3rd-party software”和“Git from the command line only”。默认选前者,意思是把Git加入系统PATH,这样你打开CMD、PowerShell也能直接敲git命令。不要选“Use Git and optional Unix tools from the Command Prompt”,这个会把大量Unix命令带进Windows的PATH,容易和其他软件冲突。
第五步选择SSH可执行文件。Windows版Git自带了一份OpenSSH,一般就选“Use bundled OpenSSH”。除非你明确知道自己系统里有配置好的OpenSSH,否则别动这个选项。很多人在后面配SSH免密时遇到ssh: command not found,就是在这里选了系统自带SSH但系统里又没有。
第六步选择HTTPS回退传输方式。默认是“Use the OpenSSL library”,如果公司内网用了自签名HTTPS证书,后面推送拉取时经常报SSL证书错误,常见解法之一就是在这里选“Use the native Windows Secure Channel library”,因为后者用的是Windows系统证书库,内网CA证书一旦装进系统,Git就能直接信任。如果你遇到SSL证书问题,记住这个开关,后面排查章节还会提到。
第七步配置换行符转换,这个最容易被忽略且坑最多。默认选项是“Checkout Windows-style, commit Unix-style line endings”,意思是检出代码到本地时把LF转成CRLF,提交进仓库时把CRLF转回LF。这个选项适合纯Windows团队。如果你和Linux/macOS同事协作,或者项目里已经有.gitattributes文件统一管理换行符,建议选第二个“Checkout as-is, commit Unix-style line endings”,甚至第三个“Checkout as-is, commit as-is”,全看团队约定。我的建议是,新手直接保持默认,等你真的被换行符坑过一次,再来改不迟。
第八步选择终端模拟器。默认“Use MinTTY”,就是Git Bash启动时那个黑底白字的窗口。MinTTY功能更全,支持鼠标操作和自定义字体,保持默认就行。
最后一步”Additional options“,把“Enable file system caching”和“Enable Git Credential Manager”勾上就行。装完后右键菜单会出现“Git Bash Here”和“Git GUI Here”,一切正常就可以继续配置了。
2.2 macOS:两种方式随意选
macOS装Git,最简单的是装一个Homebrew,然后一行命令:
bash复制brew install git
装完运行git --version确认,再用which git看路径。这里有个坑:macOS自带的Git(或者说Xcode Command Line Tools里的Git)路径是/usr/bin/git,而Homebrew装的通常在/usr/local/bin/git(Intel芯片)或/opt/homebrew/bin/git(Apple Silicon)。如果which git显示的还是/usr/bin/git,说明PATH优先级不对,你需要在shell配置文件里把Homebrew的路径加到前面。
brew install git装的是Homebrew维护的Git,比系统自带的新,而且更新方便,直接brew upgrade git就行。如果你不想装Homebrew,也可以去git-scm.com下载.dmg安装包,图形化安装,过程跟普通Mac软件一样,拖进Applications目录就完事。注意第一次运行时会弹“无法打开,因为无法验证开发者”之类的提示,去“系统设置-隐私与安全性”里点“仍要打开”就行。
macOS还有一种隐藏情况:当你第一次在终端敲git命令时,系统会弹窗询问是否安装“Command Line Developer Tools”,你点安装后也能得到一个Git。这个方式装出来的版本是苹果随系统维护的,通常不是最新版,但不影响日常使用。想快速上手,这种方式也完全可以。
2.3 Linux:一条命令搞定
Debian/Ubuntu系:
bash复制sudo apt update
sudo apt install git
CentOS/RHEL/Fedora:
bash复制sudo dnf install git
更老一点的CentOS 7或8还在用yum的,可以用:
bash复制sudo yum install git
装完同样验证git --version。发行版自带的Git版本往往偏旧,但功能上对绝大多数场景都够用。如果你需要最新版,可以通过添加官方源或者源码编译的方式安装,但对于普通开发者,我建议能用系统包管理器就用系统包管理器,省心最重要。源码编译Git要自己装一堆依赖,比如curl-devel、expat-devel、gettext-devel、openssl-devel、zlib-devel,再执行make configure && ./configure --prefix=/usr/local && make && sudo make install,整个流程下来至少十分钟,收益却不大。
3. 安装完之后的全局配置
3.1 必设的三件套:身份、换行符、默认行为
装完Git后的第一件事不是在GitHub上建仓库,而是先配置用户信息。这一步不做,你后面每次提交都会收到一条让你怀疑人生的错误提示。
bash复制git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
这两个配置会写入~/.gitconfig文件,每次提交代码时,Git会把你设置的名字和邮箱记录在提交信息里。这里有个细节:邮箱建议和你在代码托管平台(GitHub、Gitee或公司GitLab)绑定的邮箱保持一致,否则你在平台上的提交记录不会关联到你的账号,头像显示不出来,贡献图也是空的。有些人不注意这一点,提交了半年代码才发现自己的GitHub小绿格一直没亮,就是这个原因。
第二个必设配置是默认分支名。Git在较早版本里git init的默认分支叫master,后来主流平台都改成了main,你本地如果还停在旧习惯,可以提前统一:
bash复制git config --global init.defaultBranch main
这样以后git init出来的仓库初始分支就是main,跟GitHub上的默认分支保持口径一致,少了来回切换分支名的麻烦。
第三个推荐尽早设置的全局配置是换行符行为。Windows用户如果在安装向导里选好了,可以不用再动。但如果你已经装完了又想改,可以用命令:
bash复制git config --global core.autocrlf true # Windows
git config --global core.autocrlf input # macOS / Linux
true对应“检出转CRLF,提交转LF”,适合Windows;input对应“检出原样,提交转LF”,适合macOS和Linux。这个配置就是为了解决不同平台换行符不一致导致的巨大diff问题,你一旦在跨平台协作中碰见过“整个文件都飘红、其实只改了一行”的诡异情况,就会理解它的价值。
还有一个日常体验配置,建议把默认编辑器改了,免得每次提交信息都要面对Vim:
bash复制git config --global core.editor "code --wait" # VS Code
git config --global core.editor "nano" # 简单编辑器
3.2 常用别名与视觉优化
Git命令有一些高频组合,每次打完一大串很累。配置别名可以显著提高操作效率:
bash复制git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci "commit -m"
git config --global alias.lg "log --oneline --graph --decorate --all"
配完之后,git st就等同于git status,git lg可以看出一条带图形线条的提交历史,比默认的git log好看很多。命令行里敲命令的幸福感,很大程度是靠这种小配置堆出来的。
除了别名,还有一个git log的全局优化配置:如果你希望默认的git log输出更紧凑,可以设置git config --global format.pretty "%h %ad %s",把哈希值截短、显示提交说明。不过我更推荐直接用别名lg,保留默认git log的完整信息,两不耽误。
3.3 SSH免密配置:一劳永逸的公钥登录
每次git push都输账号密码,真的会让人烦到怀疑人生。Git支持两种远程交互方式:HTTPS和SSH。HTTPS方式配合Credential Manager也能实现免密,但SSH方式是更“Git原生”的方案,配置一次之后一劳永逸。
第一步,生成密钥对。打开Git Bash(Windows)或终端(macOS/Linux):
bash复制ssh-keygen -t ed25519 -C "你的邮箱"
一路回车,默认存储位置是~/.ssh/id_ed25519,可以不设密码。如果你不放心,也可以设置一个passphrase,但那会在每次使用密钥时多一次验证,日常开发建议留空。老教程里经常看到用rsa -b 4096,但Ed25519更短更快,安全强度也够,是目前的主流选择。
第二步,把公钥内容复制到剪贴板:
bash复制cat ~/.ssh/id_ed25519.pub
把输出的一大串内容复制下来。去GitHub的“Settings - SSH and GPG keys”页面,点“New SSH key”,粘贴保存。Gitee的操作路径类似,在“设置 - SSH公钥”里粘贴。
第三步,验证是否生效:
bash复制ssh -T git@github.com
如果是GitHub,会返回Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.。看到这行字就说明SSH通道已经打通了。这时候你给远程仓库配地址时就要用SSH地址:
bash复制git remote add origin git@github.com:用户名/仓库名.git
以后git push就再也不用输密码了。
这里有个排查要点:如果ssh -T报Permission denied (publickey),先确认ssh-agent是否在运行并已加载密钥。Windows下执行:
bash复制eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
然后重新验证。macOS下如果重启后密钥丢失,可以在~/.ssh/config里加一行AddKeysToAgent yes并UseKeychain yes,让系统钥匙串帮你记住。
3.4 凭据管理:HTTPS方式也能免密
如果你更喜欢用HTTPS地址克隆仓库(例如公司内网可能只开放HTTPS),也可以配置凭据管理器让Git保存账号密码。
Windows版Git安装时默认启用了Git Credential Manager,当你在HTTPS方式下第一次推送时,会弹出一个窗口让你登录托管平台。登录一次后,凭据就被保存到Windows凭据管理器里,以后操作不再提示。如果你用的是老版本Git且没有这个功能,可以手动开启:
bash复制git config --global credential.helper manager
macOS下可以用osxkeychain,把账号密码存在系统钥匙串:
bash复制git config --global credential.helper osxkeychain
Linux下常用的是store或cache模式,store明文存在~/.git-credentials里,cache只缓存一段时间。出于安全考虑,Linux上我建议大家用cache加上超时时间:
bash复制git config --global credential.helper "cache --timeout=3600"
凭据管理器虽然方便,但要注意:如果你在多台电脑上工作,每台机器都要单独配置一次;如果系统重装,凭据也丢了,重新登录就行。
4. Git配置文件层级与生效机制
4.1 system、global、local:三个层级的优先级
很多新手配置完之后,发现某次操作不对,改了半天配置文件却压根不生效,原因多半是没搞清楚Git配置是有层级的。Git配置一共分三层:
- system:作用于整台机器的所有用户,配置文件在Windows的
C:\Program Files\Git\etc\gitconfig,Linux/macOS在/etc/gitconfig。一般只有管理员才会改这层。 - global:作用于当前用户的所有仓库,配置文件在
~/.gitconfig(Windows下可能是C:\Users\你的用户名\.gitconfig)。日常配置基本都写在这里。 - local:只作用于当前仓库,配置文件在仓库目录下的
.git/config。这个最灵活,可以给某个项目单独设置不同的用户名、邮箱。
查看配置时,从上到下优先级递增:system最低,global其次,local最高。也就是说,如果三层都设置了user.name,最终生效的是local里的值。
想确认某个配置最终解析出来是什么值,用:
bash复制git config --show-origin --get user.name
这条命令会把这个值来自哪个配置文件也一起打印出来,排查“为什么我改了不生效”特别有用。平时看配置可以用git config --list --show-origin,直接列出所有配置项和来源。
4.2 常见的环境变量与PATH问题
Windows下有个经典问题:明明Git装好了,在Git Bash里敲git没问题,但打开CMD或PowerShell,却提示'git' 不是内部或外部命令。
原因是安装后没有把Git的路径加进系统PATH。正常情况下安装向导会自动处理,但如果你之前手动改过PATH,或者用了解压版、绿色版Git,就很可能会出现这个问题。解决办法是手动把C:\Program Files\Git\bin加进PATH,顺便把C:\Program Files\Git\cmd也加上,因为很多第三方工具实际调用的是cmd目录下的git.exe。
还有一类问题出现在IDE集成时,比如VSCode、IntelliJ IDEA、PyCharm里设置的Git路径不对。这些IDE通常会自动探测系统PATH里的Git,但如果你用的是便携版、或者公司统一安装到了非默认路径,IDE就可能找不到。这时候需要手动在IDE设置里指定git.exe的完整路径。Windows下通常是C:\Program Files\Git\bin\git.exe,也可以在Git Bash里用which git查出来。
4.3 手动编辑配置文件时的注意点
.gitconfig文件本质是INI格式的纯文本,手动编辑完全可行。推荐用git config --global --edit命令打开编辑器修改,它会自动定位到你的全局配置文件,避免找错文件。
手动编辑时需要注意:段落名不能重复,键名区分大小写,值如果含空格必须加引号。最常见的错误是手滑在键名前打了空格,或者把段落名写错了,Git解析配置文件时会报bad config line错误,连git config命令本身都跑不了。遇到这种情况,直接用文本编辑器打开配置文件,把出错的行使劲找出来修掉就能恢复。
5. 常用操作验证安装是否正常
5.1 基础命令冒烟测试
装完配置完,我习惯跑一遍“冒烟测试”,确保Git工作正常。不用多复杂,就几条命令:
bash复制git --version
git config --list
第一条确认版本,第二条确认配置加载正常。然后建一个临时目录,走一遍完整的本地提交流程:
bash复制mkdir git-test && cd git-test
git init
echo "hello git" > README.md
git add README.md
git commit -m "first commit"
git log --oneline
如果最后能看到xxxxxxx first commit这样的输出,说明本地的初始化、暂存、提交链路全通。这一步做完,Git的基本安装配置就算彻底没问题了。
5.2 验证SSH连接与远程仓库访问
如果之前配了SSH免密,再验证一下远程仓库访问:
bash复制ssh -T git@github.com
或者测试克隆一个公开仓库:
bash复制git clone git@github.com:用户名/仓库名.git
如果你平时公司用的是GitLab,也可以先把SSH公钥贴到GitLab上,再验证一次。很多人在本地配好了Git,但远程操作一直报错,问题往往不在Git本身,而是托管平台端的密钥没配对、权限没开,这一步排查要内外结合。
6. 常见问题与排查技巧实录
6.1 安装类问题的现场还原
问题一:双击安装包没反应或报错“安装程序无法启动”。常见原因是下载的安装包不完整,或者杀毒软件拦截了。解决方式是重新下载最新的安装包,关掉杀毒软件或用管理员权限运行。还有一个隐蔽原因:Windows的安全策略限制运行非签名程序,但Git官方安装包是有签名的,一般不会触发,真遇到了在文件上右键属性里看看“解除锁定”是否有勾选。
问题二:装完右键没有“Git Bash Here”。这个一般出现在安装时取消了Windows Explorer integration组件的场景。解决方法是重新运行安装包,选“Modify”,把组件勾上。如果还不行,可能是系统右键菜单被某些优化软件精简过,可以通过注册表手动加,但为了几个右键项去动注册表不太划算,直接改从开始菜单进Git Bash也能用。
问题三:在IntelliJ IDEA或PyCharm里配置Git时一直提示“Git executable not found”。这个往往是IDE没有自动找到Git路径。Open Settings - Version Control - Git,把Path to Git executable手动填上C:\Program Files\Git\bin\git.exe。macOS下用which git查路径。注意填完后要点“Test”按钮,能显示版本号就说明路径写对了。
6.2 配置与使用类问题的现场还原
问题一:提交时提示“Please tell me who you are”。这就是没配user.name和user.email。很多人奇怪“我明明配了”,一查发现配置写在了某个仓库的local层级,换个仓库就没了。要么在global层级全局配置,要么每个仓库单独配置,搞清楚层级就知道怎么处理。
问题二:文件里中文变成乱码,git status显示中文文件名为\346\265\213\350\257\225.txt。默认情况下Git为了兼容性会把非ASCII字符转义显示。想正常显示中文文件名,执行:
bash复制git config --global core.quotepath false
但核心的UTF-8编码问题要从根源解决:确保文件保存为UTF-8编码,确保终端的编码也是UTF-8。Windows下Git Bash一般默认UTF-8,CMD的默认编码可能是GBK,输出乱码时优先检查终端编码。
问题三:推送时报unable to access ... SSL certificate problem。这类错误绝大多数是自签名证书或内网证书没被信任。临时绕过的方式是:
bash复制git config --global http.sslverify false
但我不建议长期这么干,因为等于关掉了HTTPS的证书验证,有安全隐患。靠谱的做法是把内网CA证书装进系统信任区,或者改用SSH方式。企业内部的代码托管平台一般都支持SSH,配置一次就干净了。
问题四:git pull时报error: Your local changes to the following files would be overwritten by merge。这个不是Git坏了,是本地有未提交改动和远程冲突了。处理思路是先把本地改动提交或暂存,再拉取合并。用git stash是常用解:
bash复制git stash
git pull
git stash pop
把当前改动先收起来,拉取完再放回来。如果pop时冲突,再手动解决冲突文件,然后git add + git commit。
问题五:换行符引发的大规模diff。这个在从Windows和macOS协同时非常常见。文件没改几行,但git diff显示整个文件全变了,极大概率是换行符的锅。修法是让core.autocrlf配置统一,或者项目里加.gitattributes文件。.gitattributes是更推荐的做法,因为配置跟着仓库走,所有协作者自动生效,不用每个人手工改全局配置。
6.3 手残党的回血指南:git配置重置
有的时候配置真的被自己改到不可收拾,怎么办?别急着重装,几个命令可以让你“重新做人”:
bash复制git config --global --edit # 手动检查并修改全局配置
git config --global --unset 配置项 # 删除某个配置项
git config --global --list # 查看当前所有全局配置
实在乱到不行,直接删除~/.gitconfig文件,然后按第3节重新配置一遍。不会丢失仓库数据,只是回到默认状态。这个操作对新手来说,相当于游戏里的“重置存档”,非常管用。
7. 我的一点体会:配置别照抄,理解才是王道
看过太多人拿着教程一条条敲命令,照抄完了也不知道每个配置是干嘛的。等到真出问题了,排查无门,只能搜“Git xxx 报错”,然后又复制一条可能让情况更糟的命令。所以最后唠叨几句我自己带新人的时候反复强调的几个原则。
第一,配置命令敲下去之前,先搞明白这行配置在哪个层级、管什么事。--global改的是用户级,不是所有用户,更不是系统级。很多公司电脑有多个账号,你用一个带--global的配置把自己的邮箱写死了,同事接力用这台机器时就会雾水一头。
第二,优先理解三个核心概念:工作区、暂存区、提交历史。装好Git只是起点,真正拉开体验差距的是你对这三个概念的理解。工作区就是你在编辑器里看到的文件,暂存区是你用git add放进去、准备打包的快照,提交历史是你用git commit永久保存的每个版本。遇到任何操作报错,先问自己:我刚才的操作动的是哪一层?这个思路能解决大部分困惑。
第三,别害怕重置。配置错了,删掉重来;分支搞乱了,git reflog恢复;提交信息写错了,git commit --amend改掉。Git的容错力比你想的强得多,真正的风险不是操作出错,而是出错了不会看错误信息。每一条报错都是在告诉你它想要什么,学会读报错,比会敲一百条命令都有用。
最后再补一句经验之谈:装好Git之后,推荐花半天时间把你的日常操作过一遍:建仓、分支、暂存、提交、推拉、解决冲突。不用贪多,把这几个动作练熟,配合好别名和免密配置,你就能感受到Git带来的效率提升。本文整理的安装配置经验,是我在Windows、macOS、Linux三端反复折腾了很多次之后总结出来的“最大公约数”,照着一路配下来,大概率不会再被基础问题卡住。如果还有没覆盖到的奇葩问题,建议先去查git help,很多时候答案就在你自己机器的文档里。
