Git 是当前最流行的分布式版本控制系统(Distributed Version Control System,DVCS),几乎所有与软件开发或文档管理相关的项目都离不开它。尤其是对于开发者而言,了解如何在 macOS(MacBook Pro)平台上安装、配置并及时升级 Git 版本,是顺利开展协作开发的基础。本文将全面讲解从安装到升级到常见问题的解决方案,力求帮助你扫清概念困惑、明确实操步骤。
面向读者:
作者✍ 公众号:猫头虎技术团队
feature
、bugfix
、release
等独立分支上进行工作,实现并行开发与代码隔离。如果你想了解更深入的 Git 原理、命令详解或 Git Flow 工作流,可以参考猫头虎技术团队公众号里的系列文章。本篇重点在“如何在 MacBook Pro 上安装、配置与升级 Git”,确保你手上有一套干净、最新的开发环境。
作者✍️ 猫头虎微信号:Libin9iOak 公众号:猫头虎技术团队
在 macOS(尤其是 macOS Catalina 及以后版本)上,系统通常会自带一个旧版本的 Git(通过命令行开发工具 Command Line Tools 安装)。但一般情况下,这个版本过旧,且不便于管理与升级。因此,推荐通过 Homebrew 或官方 Installer 安装最新版本。以下根据用户习惯与场景列举三种常见方式。
安装 Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
确认 Homebrew 安装成功
brew -v
使用 Homebrew 安装 Git
brew install git
安装完成后,Homebrew 会将 Git 二进制放在 /usr/local/bin/git
(Intel 芯片)或 /opt/homebrew/bin/git
(M 系列芯片)。
如果你已经安装过旧版本的 Git,直接执行升级:
brew upgrade git
Homebrew 会自动检测并下载最新的 Git 包。
验证安装与路径优先级
which git
git --version
/usr/local/bin/git
(或 /opt/homebrew/bin/git
)表示你正在使用 Homebrew 版本;作者✍️ 猫头虎微信号:Libin9iOak 公众号:猫头虎技术团队
下载官方 Installer
.dmg
文件,如 git-2.xx.x-intel-universal-mavericks.dmg
或 git-2.xx.x-arm64-monterey.dmg
,具体取决于最新版本与系统兼容。运行安装程序
.dmg
,将 Git 应用拖拽到 “Applications” 或按照安装向导提示完成。/usr/local/git/bin/git
。修改 PATH 环境变量(如有必要)
执行 which git
看到的路径如果是 /usr/bin/git
,说明仍在使用系统自带的旧版本;
编辑 ~/.zshrc
或 ~/.bash_profile
,将 /usr/local/git/bin
放在 PATH 前端:
export PATH="/usr/local/git/bin:$PATH"
保存并 source ~/.zshrc
,使环境变量生效;
验证安装
git --version
git version 2.xx.x
,说明使用的是官方发行版本;安装依赖
需要先安装 Xcode Command Line Tools:
xcode-select --install
安装一些必要的库,如 openssl
、zlib
等(可通过 Homebrew 安装):
brew install openssl zlib curl
下载 Git 源码
wget https://github.com/git/git/archive/v2.xx.x.tar.gz
tar -zxf v2.xx.x.tar.gz
cd git-2.xx.x
编译与安装
make configure
./configure --prefix=/usr/local/git --with-openssl=$(brew --prefix openssl)
make all
sudo make install
--prefix
可以指定安装目录,便于统一管理;git --version
验证是否已经安装在 /usr/local/git/bin/git
。添加到 PATH
编辑 ~/.zshrc
或 ~/.bash_profile
,加入:
export PATH="/usr/local/git/bin:$PATH"
执行 source ~/.zshrc
使更改生效;
作者✍️ 猫头虎微信号:Libin9iOak 公众号:猫头虎技术团队
安装完成后,你需要进行一些基本配置,保证在提交代码、推送到远端仓库时不会遇到身份不明或信息不全的问题。对于初学者来说,以下 4 个方面的配置是最常见且最必要的。
作者✍️ 猫头虎微信号:Libin9iOak 公众号:猫头虎技术团队
Git 提交(commit)时会记录提交人的信息。如果不配置,Git 会使用默认的主机名或操作系统用户名,导致协作者无法分辨提交者身份。
全局设置(推荐)
git config --global user.name "你的姓名"
git config --global user.email "your_email@example.com"
--global
表示在当前用户下所有仓库都生效;局部设置(针对单个仓库) 在某些项目中,你需要以不同身份提交(比如开源项目想用个人邮箱而公司项目用公司邮箱),可进入项目根目录执行:
git config user.name "开源小明"
git config user.email "opensource@example.com"
验证配置
git config --global --list
git config --list # 查看当前仓库的所有配置(包含全局和局部)
为了提升工作效率,你可以给常用命令设置简短别名,并指定默认编辑器(如修改提交信息时打开的文本编辑器)。
常用别名示例
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm "commit -m"
git config --global alias.df "diff --cached"
git config --global alias.lg "log --oneline --graph --decorate"
git st
替代 git status
,git co
替代 git checkout
;指定编辑器
默认情况下,Git 提交会打开 vim
(对新手有一定挑战);
如果你更喜欢 nano
:
git config --global core.editor "nano"
如果你偏好图形化编辑器(如 VSCode):
git config --global core.editor "code --wait"
“–wait” 参数确保 VSCode 关闭之后才继续执行 Git 提交;
Git 可以在终端中用颜色区分不同状态,让输出更直观。
git config --global color.ui auto
auto
模式会根据终端是否支持颜色自动开启;
可以进一步针对某些命令单独配置颜色:
git config --global color.status auto
git config --global color.branch auto
git config --global color.interactive auto
git config --global color.diff auto
~/.gitconfig
文件,适用于当前用户在所有仓库中的操作。/etc/gitconfig
,影响系统上所有用户,一般不常修改。.git/config
,只对当前仓库生效。你可以通过 git config --global --edit
或 git config --edit
直接打开编辑器进行可视化修改。
作者✍️ 猫头虎微信号:Libin9iOak 公众号:猫头虎技术团队
为了避免每次 git clone
、git push
时输入用户名和密码,建议使用 SSH Key 进行认证。以下步骤演示了如何在 MacBook Pro 上生成并使用 SSH Key 与主流平台(如 GitHub、GitLab、Bitbucket)集成。
检测是否已有 SSH Key
ls -al ~/.ssh
如果看到 id_rsa
、id_rsa.pub
、id_ed25519
、id_ed25519.pub
等文件,说明已经存在;
如果没有,使用 OpenSSH 生成
ssh-keygen -t ed25519 -C "your_email@example.com"
-t ed25519
:指定使用 Ed25519 算法(更安全、更短);如果老旧系统不支持,可换成 rsa
:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
路径提示时直接回车会保存在 ~/.ssh/id_ed25519
(或 id_rsa
);
期间可设置加密密码短语 (passphrase),也可留空但不推荐。
启动 ssh-agent 并添加私钥
eval "$(ssh-agent -s)"
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
--apple-use-keychain
:将加密密码存储到 macOS 钥匙串中,方便自动解锁;
如果使用 RSA:
ssh-add --apple-use-keychain ~/.ssh/id_rsa
复制公钥内容
pbcopy < ~/.ssh/id_ed25519.pub
pbcopy
将公钥拷贝到剪贴板;id_rsa.pub
,则 pbcopy < ~/.ssh/id_rsa.pub
;在 GitHub 添加
Settings
→ 左侧导航 SSH and GPG keys
→ New SSH key
;在 GitLab 添加
Preferences
→ SSH Keys
→ 粘贴公钥,设置过期时间(可选),点击 “Add key”;在 Bitbucket 添加
Personal settings
→ 左侧 SSH keys
→ Add key
→ 粘贴,点击 “Add”;ssh -T git@github.com
ssh -T git@gitlab.com
ssh -T git@bitbucket.org
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
的提示;
Permission denied (publickey)
,请检查:
作者✍️ 猫头虎微信号:Libin9iOak 公众号:猫头虎技术团队
随着 Git 社区的持续迭代,时常会发布新的功能和安全补丁。因此,定期升级到最新版非常必要。以下方法基于你已经成功安装 Git(通过 Homebrew、官方 Installer 或源码)。
如果你是通过 Homebrew 安装的 Git,升级最为简单,也最常见。
更新 Homebrew 索引与升级 Git
brew update # 更新 Homebrew 的软件包索引
brew upgrade git # 升级 Git 到最新版本
brew update
会先拉取最新的 formula(配方),确保你要安装/升级的软件是最新的;
如果只想临时跳过 brew update
(加快速度),可执行:
HOMEBREW_NO_AUTO_UPDATE=1 brew upgrade git
升级完成后,Homebrew 会在终端打印安装路径与状态,比如:
==> Upgrading 1 outdated package:
git 2.45.1 -> 2.46.0
==> Upgrading git
🍺 /opt/homebrew/Cellar/git/2.46.0: 1,502 files, 49.5MB
验证升级是否生效
which git
git --version
which git
路径仍然是 /usr/local/bin/git
或 /opt/homebrew/bin/git
(Homebrew 版);git --version
输出的新版本号;清理废弃版本(可选)
brew cleanup git
作者✍️ 猫头虎微信号:Libin9iOak 公众号:猫头虎技术团队
若你之前是通过官方 .dmg
安装包安装的,可以重复下载最新版本的安装器进行覆盖式安装。
从官网重新下载
.dmg
包;确认升级
git --version
/usr/local/git/bin/git
(或相应目录);作者✍️ 猫头虎微信号:Libin9iOak 公众号:猫头虎技术团队
对于需要自定义编译选项或想要深入了解 Git 源码的高级用户,可以自己下载源码并重新编译最新版本。
下载最新源码
wget https://github.com/git/git/archive/refs/tags/v2.xx.x.tar.gz
tar -zxf v2.xx.x.tar.gz
cd git-2.xx.x
编译与安装
make configure
./configure --prefix=/usr/local/git-latest --with-openssl=$(brew --prefix openssl)
make all
sudo make install
将 --prefix
指向新的安装目录(如 /usr/local/git-latest
),以免覆盖旧版本。
编译完成后,记得将新版路径添加至 PATH:
export PATH="/usr/local/git-latest/bin:$PATH"
你可以将此行添加到 ~/.zshrc
或 ~/.bash_profile
中:
echo 'export PATH="/usr/local/git-latest/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
验证新版本
git --version
PATH
顺序或删除上述 --prefix
路径。在 macOS 上,由于系统自带、Homebrew 安装、官方 Installer 安装、源码编译等多种方式并存,很容易出现多个 Git 版本共存的情况。以下几步帮助你定位并解决冲突。
列举所有可执行的 Git 路径
which -a git
典型输出可能是:
/usr/local/bin/git
/usr/bin/git
/usr/local/git-latest/bin/git
第一行即为当前 shell 认为的优先路径;
判断优先级顺序
在 macOS 中,PATH
环境变量从左到右依次检索可执行程序;
查看你的 PATH
:
echo $PATH
若 /usr/bin
位于 /usr/local/bin
前面,则会优先使用系统自带版本;
调整 PATH
编辑 ~/.zshrc
(如果使用 zsh)或 ~/.bash_profile
(bash):
# 将 Homebrew 目录提前
export PATH="/usr/local/bin:$PATH"
# 或者将自定义编译目录放在最前
export PATH="/usr/local/git-latest/bin:$PATH"
保存后执行 source ~/.zshrc
使生效;
重新执行 which git
确认路径已变更;
删除多余版本(谨慎)
如果某个版本长时间不用,可以手动卸载:
Homebrew 版:
brew uninstall git
官方 Installer 版:
找到安装时的卸载脚本(通常在 /usr/local/git
下有 uninstall.sh
),或执行以下命令删除:
sudo rm -rf /usr/local/git
sudo rm /etc/paths.d/git
源码编译版:
如果记得当初的 --prefix
路径,可直接删除对应目录:
sudo rm -rf /usr/local/git-latest
最终验证
which git
git --version
作者✍️ 公众号:猫头虎技术团队
作者✍️ 公众号:猫头虎技术团队
如果你需要彻底卸载 Git(例如从头重新安装,或切换到另一种安装方式),请根据当初的安装方式选择相应操作。
通过 Homebrew 安装的 Git
brew uninstall git
brew cleanup git # 清理缓存与旧版本
通过官方 Installer 安装的 Git
官方安装包会生成一个卸载脚本,通常位于 /usr/local/git
下。例如:
sudo /usr/local/git/uninstall.sh
如果找不到卸载脚本,可手动删除:
sudo rm -rf /usr/local/git
sudo rm /etc/paths.d/git
sudo rm /etc/manpaths.d/git
确保 .gitconfig
、.ssh
中的公钥等文件未误删。
通过源码编译安装的 Git
如果你当时指定了 --prefix=/usr/local/git-latest
,只需删除该目录:
sudo rm -rf /usr/local/git-latest
并且清理 PATH 中对应的行:
# 编辑 ~/.zshrc 或 ~/.bash_profile,删除与 /usr/local/git-latest 相关的 export
确认卸载
which git
git --version
/usr/bin/git
,说明系统自带版本依旧存在;这是 macOS 默认路径,无法删除(与 Command Line Tools 绑定)。which git
会没有输出,或提示 git: command not found
。作者✍️ 猫头虎微信号:Libin9iOak 公众号:猫头虎技术团队
以下是一线开发者在 macOS 上使用 Git 时可能遇到的常见问题,结合实战经验给出解决方法。初学者可以根据提示自行排查与修复。
现象:
git --version
后,发现版本仍然是 git version 2.x.x
(老旧版本),或者路径是 /usr/bin/git
。原因:
解决:
确认 Homebrew 版本已经安装:
which git # 如果输出 /usr/local/bin/git 或 /opt/homebrew/bin/git,则说明 Homebrew 版 Git 存在
查看 PATH 顺序:
echo $PATH
确保 Homebrew 路径(如 /usr/local/bin
或 /opt/homebrew/bin
)位于 /usr/bin
之前;
如果不是,请编辑 ~/.zshrc
或 ~/.bash_profile
:
export PATH="/usr/local/bin:$PATH"
source ~/.zshrc
,使更改生效,再次执行 which git
;
现象:
brew install git
或 brew upgrade git
时,提示 Permission denied
或者某些目录无法写入;原因:
/opt/homebrew
,与老机器不一致;解决:
修复 Homebrew 权限:
sudo chown -R $(whoami) /usr/local/Homebrew
sudo chown -R $(whoami) /usr/local/Cellar
sudo chown -R $(whoami) /usr/local/Frameworks
/usr/local
替换为 /opt/homebrew
;重新运行安装命令:
brew update
brew install git
如果提示 Homebrew 未安装或命令找不到:
重新安装 Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
现象:
ssh -T git@github.com
返回 Permission denied (publickey).
原因:
ssh-agent
;解决:
确保 SSH Key 存在:
ls ~/.ssh
id_ed25519
或 id_rsa
,需要重新生成;添加私钥到 ssh-agent:
eval "$(ssh-agent -s)"
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
在平台侧重新核对公钥:
pbcopy < ~/.ssh/id_ed25519.pub
确保公钥完整;测试连接并查看详细日志:
ssh -vT git@github.com
作者✍️ 猫头虎微信号:Libin9iOak 公众号:猫头虎技术团队
现象:
~/.gitconfig
或仓库的 .git/config
中写入了配置,执行 git config
命令却查不到。原因:
解决:
定位配置文件路径:
git config --global --edit # 会打开 ~/.gitconfig
git config --system --edit # 会打开 /etc/gitconfig
git config --edit # 会打开当前仓库的 .git/config
确认文件编码与格式:
确保没有 Windows 的换行符(CRLF),建议使用 UTF-8 编码;
格式示例:
[user]
name = 你的姓名
email = your_email@example.com
[core]
editor = code --wait
[color]
ui = auto
执行 git config --list --show-origin
查看读取顺序:
git config --list --show-origin
作者✍️ 猫头虎微信号:Libin9iOak 公众号:猫头虎技术团队
下面列出一些常见入门场景下的 Git 命令,供快速参考。
操作场景 | 命令示例 | 备注 |
---|---|---|
查看 Git 版本 | git --version | 输出当前 Git 版本号。 |
初始化仓库 | git init | 在当前目录创建一个空的 Git 仓库。 |
克隆远程仓库 | git clone <repo_url> | 从远程仓库拉取完整代码与历史记录。 |
查看当前状态 | git status | 显示工作区文件修改与暂存区状态。 |
添加文件到暂存区 | git add <file> 或 git add . | . 代表把当前目录下所有改动文件添加到暂存区。 |
提交(commit) | git commit -m "提交说明" | 提交暂存区改动到本地版本库。 |
查看提交日志(简洁) | git log --oneline --graph --decorate | 图形化展示提交历史,适合快速查看分支与合并情况。 |
创建分支 | git branch <branch-name> | 只创建分支不切换。 |
切换分支 | git checkout <branch-name> | 切换到指定分支。 |
创建并切换新分支 | git checkout -b <new-branch> | 相当于先 git branch <new-branch>,再 git checkout <new-branch>。 |
合并分支 | git merge <branch-name> | 将指定分支合并到当前分支。 |
查看分支列表 | git branch | 当前分支前会有 * 标记。 |
删除本地分支 | git branch -d <branch-name> | 如果分支尚未合并,会提示无法删除;强制删除使用 -D。 |
查看远程仓库信息 | git remote -v | 列出所有远程仓库地址(fetch 与 push)。 |
新建远程仓库地址 | git remote add origin <repo_url> | 给当前仓库添加一个远程仓库别名为 origin。 |
推送到远程分支 | git push -u origin <branch-name> | 使用 -u 参数让本地分支与远程分支建立跟踪;下次可直接 git push。 |
拉取并合并远程更新 | git pull | 等同于 git fetch + git merge。 |
只拉取远程更新 | git fetch | 只把远程更新提取到本地,但不自动合并;适合先查看再决定是否合并。 |
查看差异 | git diff | 显示工作区与暂存区之间的差异。 |
查看暂存区与 HEAD 的差异 | git diff --cached | 或 git diff --staged。 |
查看某次提交的改动 | git show <commit-hash> | 显示对应提交详细 diff 信息。 |
回退到上一次提交 | git reset --hard HEAD^ | 小心使用,会丢失工作区修改;可先 git stash 保存临时改动。 |
删除本地已经合并的分支 | git branch -d <branch-name> | 只删除本地引用,不会影响远程。 |
删除远程分支 | git push origin --delete <branch-name> | 把远程分支从远程仓库删除。 |
查看远程分支列表 | git branch -r | 列出所有远程分支;可以用 git branch -a 同时显示本地和远程分支。 |
配置用户名与邮箱 | git config --global user.name "Name"git config --global user.email "email@example.com" | 在提交时记录身份信息;去掉 --global 则只对当前仓库生效。 |
设置默认编辑器 | git config --global core.editor "code --wait" | 提交注释时会调用 VSCode,修改后等待文件关闭再继续。 |
设置颜色高亮 | git config --global color.ui auto | 让 Git 输出带颜色,区分不同状态。 |
作者✍️ 公众号:猫头虎技术团队
作者✍️ 公众号:猫头虎技术团队
本文 详细介绍了在 MacBook Pro 上安装、配置与升级 Git 的全流程,并结合常见问题提供了针对性的排查思路。以下几点希望能够帮助你更好地掌握 Git 并在日常开发中避免困惑:
.gitconfig
的优先级(全局 vs 局部 vs 系统)避免配置不生效。git config --list --show-origin
查找配置来源。至此,你应该已经掌握了在 macOS (MacBook Pro) 环境下如何从零开始安装、配置并升级 Git,更具备了基本的故障排查能力。后续只需多加练习常用命令与分支管理流程,就能轻松应对大多数 Git 场景。希望本文对你有所帮助,欢迎关注“猫头虎技术团队”公众号,获取更多实用技术干货,一起成长!