当程序员拿到一台新Mac,构建全栈制霸环境
当程序员拿到一台新Mac,构建全栈制霸环境
第一章:环境准备
本章将指导你在 macOS 系统上搭建完整的开发环境,包括包管理器、编程语言运行时、容器工具和 IDE。
重要说明:本章内容专门针对中国大陆网络环境进行了优化。由于众所周知的网络原因,大多数开发工具的官方下载源都位于境外(如 GitHub、AWS、Google Cloud 等),直接访问通常会非常慢甚至完全无法连接。因此,配置国内镜像源是在大陆环境下高效开发的必要前提。
本章所有工具都提供了经过验证的国内镜像配置,帮助你顺利完成环境搭建。
1.1 Homebrew 安装
Homebrew 是 macOS 上最流行的包管理器,被称为“macOS 缺失的包管理器”。它可以让你像在 Linux 上使用 apt/yum 一样,通过简单的命令安装和管理各种开发工具。
为什么需要 Homebrew?
- 简化安装流程:不再需要手动下载、解压、配置环境变量
- 统一管理:所有工具的安装、更新、卸载都通过同一个命令
- 依赖处理:自动处理软件依赖关系,避免“依赖地狱”
- 后续工具基础:本章很多工具都将通过 Homebrew 安装
安装步骤(国内镜像)
为什么不用官方脚本? Homebrew 官方安装脚本位于 GitHub,且需要从 GitHub 和 AWS S3 下载大量文件。在大陆直接使用官方脚本,轻则下载速度极慢(几 KB/s),重则完全无法连接。使用国内镜像可以让安装时间从几小时缩短到几分钟。
推荐使用国内镜像安装:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
根据提示选择镜像源(推荐中科大或清华源),按照向导完成安装。
手动配置镜像源
如果已安装 Homebrew,可手动配置镜像加速。编辑 ~/.zshrc:
# 中科大镜像
# HOMEBREW_BREW_GIT_REMOTE: Homebrew 核心仓库的镜像地址
# HOMEBREW_CORE_GIT_REMOTE: 软件包定义仓库的镜像地址
# HOMEBREW_BOTTLE_DOMAIN: 预编译二进制包的下载地址(这是下载最大的部分)
# HOMEBREW_API_DOMAIN: API 请求地址
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"
export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api"
提示:HOMEBREW_BOTTLE_DOMAIN 是最关键的配置,因为大部分软件都是通过下载预编译的 bottle 安装,而这些文件通常有几百 MB。
使配置生效:
source ~/.zshrc
验证安装
brew --version
常用命令
| 命令 | 说明 |
|---|---|
| brew install <package> | 安装软件包 |
| brew uninstall <package> | 卸载软件包 |
| brew update | 更新 Homebrew |
| brew upgrade | 升级所有已安装的包 |
| brew list | 列出已安装的包 |
| brew search <keyword> | 搜索软件包 |
1.2 Rust 安装
Rust 是一门注重安全性和性能的系统编程语言,近年来备受关注,被用于 WebAssembly、操作系统、命令行工具、区块链等领域。
为什么用 rustup?
- 官方推荐:rustup 是 Rust 官方的工具链管理器
- 多版本管理:轻松在 stable/beta/nightly 版本间切换
- 跨平台编译:方便添加不同目标平台的工具链
- 组件管理:统一管理 rustc、cargo、rust-analyzer 等组件
安装步骤(国内镜像)
为什么需要镜像? 官方安装脚本位于 AWS CloudFront,Rust 组件下载也依赖 AWS S3。在大陆网络下,下载速度可能只有几十 KB/s,完整安装可能需要几个小时。使用 rsproxy(字节跳动赞助)镜像可以获得接近满速的下载体验。
首先配置 rustup 镜像,编辑 ~/.zshrc:
# rsproxy 镜像(字节跳动赞助的 Rust 镜像服务)
# RUSTUP_DIST_SERVER: rustup 工具链组件的下载地址
# RUSTUP_UPDATE_ROOT: rustup 自身更新的下载地址
export RUSTUP_DIST_SERVER="https://rsproxy.cn"
export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"
使配置生效:
source ~/.zshrc
然后执行安装:
curl --proto '=https' --tlsv1.2 -sSf https://rsproxy.cn/rustup-init.sh | sh
按照提示选择默认安装(输入 1)。安装完成后,重新加载环境变量:
source "$HOME/.cargo/env"
配置 Cargo 国内镜像
为什么还要配置 Cargo? Cargo 是 Rust 的包管理器和构建工具,它从 http://crates.io 下载依赖库。官方 http://crates.io 位于 AWS,同样存在访问问题。配置 Cargo 镜像后,每次 cargo build 下载依赖都会快很多。
创建或编辑 ~/.cargo/config.toml:
[source.crates-io]
replace-with = 'rsproxy-sparse'
[source.rsproxy]
registry = "https://rsproxy.cn/crates.io-index"
# sparse 索引格式,比传统 git 索引更快
[source.rsproxy-sparse]
registry = "sparse+https://rsproxy.cn/index/"
[registries.rsproxy]
index = "https://rsproxy.cn/crates.io-index"
# 使用系统 git 工具进行拉取,解决部分网络环境下的问题
[net]
git-fetch-with-cli = true
提示:sparse+ 前缀表示使用新的 sparse 索引协议,它只下载需要的元数据,比传统的 git clone 整个索引快很多。
验证安装
rustc --version
cargo --version
常用命令
| 命令 | 说明 |
|---|---|
| cargo new <project> | 创建新项目 |
| cargo build | 编译项目 |
| cargo run | 编译并运行 |
| cargo test | 运行测试 |
| rustup update | 更新 Rust |
1.3 Java 安装
Java 是企业级应用开发的主流语言,广泛用于后端服务、Android 开发、大数据等领域。
为什么手动安装而不是用 Homebrew?
- 多版本共存:实际开发中经常需要在 JDK 8/11/17/21 之间切换
- 精确控制:知道确切的安装位置和版本信息
- 企业环境一致:与服务器环境保持一致的安装方式
- 网络无依赖:下载完成后离线安装,适合内网环境
下载 JDK
下载渠道说明:Oracle JDK 官网在大陆访问速度还可以,但需要注册账号。Adoptium 和 Azul 是开源版本,免费无需注册,推荐使用。如果下载慢,也可以在清华镜像或华为云镜像搜索 OpenJDK。
访问以下网站下载对应版本的 JDK(选择 macOS 的 .tar.gz 或 .dmg 格式):
- Oracle JDK: https://www.oracle.com/java/technologies/downloads/
- OpenJDK (Adoptium): https://adoptium.net/ (推荐,开源免费)
- Azul Zulu: https://www.azul.com/downloads/
提示:Apple Silicon Mac 选择aarch64/ARM64版本,Intel Mac 选择x64版本。
安装步骤
方式一:使用 .dmg 安装包
- 下载
.dmg文件 - 双击打开并运行安装程序
- JDK 会自动安装到
/Library/Java/JavaVirtualMachines/目录
方式二:使用 .tar.gz 压缩包
- 下载
.tar.gz文件 - 解压并移动到系统 JDK 目录:
# 解压(以 JDK 21 为例)
tar -xzf openjdk-21_macos-aarch64_bin.tar.gz
# 移动到系统 JDK 目录
sudo mv jdk-21.jdk /Library/Java/JavaVirtualMachines/
配置环境变量(支持多版本切换)
为什么这样配置? 这种配置方式的核心思想是“一次配置多版本,简单修改快速切换”。定义多个JDKxx_HOME变量后,只需修改JAVA_HOME的指向就能切换版本,无需重新设置复杂的路径。
编辑 ~/.zshrc,为每个 JDK 版本定义独立变量:
# 定义各版本 JDK 路径
export JDK8_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
export JDK11_HOME=/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
export JDK17_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
export JDK21_HOME=/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home
# 设置当前使用的版本(修改此行即可切换版本)
export JAVA_HOME=$JDK21_HOME
# 配置 classpath 和 PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
使配置生效:
source ~/.zshrc
切换 JDK 版本
只需修改 JAVA_HOME 指向不同的版本变量,然后重新加载配置:
# 切换到 JDK 17
export JAVA_HOME=$JDK17_HOME
# 切换到 JDK 21
export JAVA_HOME=$JDK21_HOME
或者添加快捷切换函数到 ~/.zshrc:
# JDK 版本切换函数
jdk() {
case $1 in
8) export JAVA_HOME=$JDK8_HOME ;;
11) export JAVA_HOME=$JDK11_HOME ;;
17) export JAVA_HOME=$JDK17_HOME ;;
21) export JAVA_HOME=$JDK21_HOME ;;
*) echo "Usage: jdk [8|11|17|21]" ; return 1 ;;
esac
echo "Switched to Java $(java -version 2>&1 | head -1)"
}
使用方式:
jdk 17 # 切换到 JDK 17
jdk 21 # 切换到 JDK 21
查看已安装的 JDK
# 查看系统识别的所有 JDK
/usr/libexec/java_home -V
# 查看 JDK 安装目录
ls /Library/Java/JavaVirtualMachines/
验证安装
java --version
javac --version
echo $JAVA_HOME
安装 Maven
Maven 是 Java 生态中最流行的项目构建和依赖管理工具。
为什么需要 Maven?
- 依赖管理:自动下载和管理项目依赖的 jar 包
- 项目构建:编译、测试、打包一条龙
- 标准化:统一的项目结构和构建流程
- 企业广泛使用:大多数 Java 项目都使用 Maven
安装
brew install maven
验证安装
mvn --version
安装 Gradle
Gradle 是新一代的构建工具,结合了 Maven 和 Ant 的优点,是 Android 官方指定的构建工具。
为什么需要 Gradle?
- 更灵活:使用 Groovy/Kotlin DSL,比 Maven 的 XML 更简洁
- 更快:增量构建、构建缓存、并行执行
- Android 必备:Android 项目必须使用 Gradle
- 现代项目首选:新项目越来越多选择 Gradle
安装
brew install gradle
验证安装
gradle --version
提示:实际项目中通常使用项目自带的 Gradle Wrapper(./gradlew),它能确保团队所有人使用相同版本的 Gradle。全局安装的 Gradle 主要用于初始化新项目。
Maven 配置国内镜像
为什么需要配置镜像? Maven 默认从 Maven Central 仓库下载依赖,该服务器在境外。配置阿里云镜像后,下载依赖的速度可以从几十 KB/s 提升到几 MB/s。
编辑 ~/.m2/settings.xml(如果文件或目录不存在,需要创建):
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0
https://maven.apache.org/xsd/settings-1.2.0.xsd">
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
</settings>
Gradle 配置国内镜像
为什么需要配置镜像? Gradle 同样从 Maven Central 和 Gradle Plugin Portal 下载依赖,配置阿里云镜像可以大幅加快构建速度。
全局配置 vs 项目配置:以下是全局配置,对所有项目生效。如果只想对单个项目配置,可以在项目的build.gradle中设置。
编辑 ~/.gradle/init.gradle(全局配置,对所有项目生效):
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/public/' }
maven { url 'https://maven.aliyun.com/repository/spring/' }
maven { url 'https://maven.aliyun.com/repository/google/' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin/' }
mavenLocal()
mavenCentral()
}
}
1.4 Node.js 安装
Node.js 是基于 Chrome V8 引擎的 JavaScript 运行时,让你可以用 JavaScript 开发服务端应用、命令行工具、前端构建工具等。
为什么用 nvm 而不是直接安装?
- 多版本管理:不同项目可能需要不同版本的 Node.js
- 无需 sudo:避免权限问题,全局包安装更干净
- 快速切换:一条命令即可切换 Node.js 版本
- 方便测试:可以轻松测试代码在不同版本下的表现
安装 nvm(国内镜像)
为什么需要镜像? nvm 官方安装脚本在 GitHub,并且安装 Node.js 时需要从 http://nodejs.org 下载。这两个地址在大陆访问都不稳定,配置镜像后可以快速完成安装。
使用 gitee 镜像安装:
curl -o- https://gitee.com/mirrors/nvm/raw/master/install.sh | bash
或通过 Homebrew 安装:
brew install nvm
如果使用 Homebrew 安装,需要额外配置。编辑 ~/.zshrc:
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"
使配置生效:
source ~/.zshrc
配置 Node.js 下载镜像
这个配置很重要! 每次 nvm install 都需要从网络下载 Node.js 二进制文件(通常 20-30MB)。官方源在大陆下载可能需要十几分钟,配置淘宝镜像后只需几秒钟。
编辑 ~/.zshrc,添加:
# npmmirror 提供的 Node.js 二进制镜像
export NVM_NODEJS_ORG_MIRROR="https://npmmirror.com/mirrors/node"
使配置生效:
source ~/.zshrc
安装 Node.js
# 安装最新 LTS 版本
nvm install --lts
# 或安装指定版本
nvm install 20
# 设置默认版本
nvm alias default 20
验证安装
node --version
npm --version
配置 npm 国内镜像
npm 镜像同样重要:npm 是 Node.js 的包管理器,官方 registry 在境外。每次 npm install 都会下载依赖包,一个项目可能有数百个依赖。配置淘宝镜像后,安装依赖的速度会有质的提升。
npm config set registry https://registry.npmmirror.com
验证配置:
npm config get registry
安装 pnpm
pnpm 是新一代的 Node.js 包管理器,近年来越来越流行。
为什么用 pnpm 而不是 npm?
- 更快:通过硬链接和符号链接共享依赖,安装速度比 npm 快 2-3 倍
- 更省空间:多个项目共享相同的依赖包,不会重复下载
- 更严格:防止“幽灵依赖”(使用未声明的依赖)
- 大型项目首选:Vue 3、Vite 等知名项目都在使用 pnpm
安装
npm install -g pnpm
配置国内镜像
pnpm config set registry https://registry.npmmirror.com
验证安装
pnpm --version
pnpm config get registry
pnpm 常用命令
| 命令 | 说明 |
|---|---|
| pnpm install | 安装所有依赖 |
| pnpm add <pkg> | 添加依赖 |
| pnpm add -D <pkg> | 添加开发依赖 |
| pnpm remove <pkg> | 移除依赖 |
| pnpm run <script> | 运行脚本 |
| pnpm update | 更新依赖 |
常用命令
| 命令 | 说明 |
|---|---|
| nvm ls | 列出已安装版本 |
| nvm ls-remote | 列出可安装版本 |
| nvm use <version> | 切换版本 |
| nvm alias default <version> | 设置默认版本 |
1.5 Docker 安装
Docker 是容器化技术的事实标准,可以将应用及其依赖打包成镜像,确保“在我机器上能跑”的代码到哪儿都能跑。
为什么用 Colima 而不是 Docker Desktop?
- 免费无限制:Docker Desktop 对大型企业收费,Colima 完全免费
- 资源占用少:没有图形界面,不会后台占用大量内存
- 启动快:几秒钟即可启动,Docker Desktop 可能需要半分钟
- 纯命令行:对开发者更友好,适合自动化脚本
什么是 Colima?
Colima 是一个基于 Lima 的容器运行时,它在 macOS 上创建一个轻量级的 Linux 虚拟机来运行 Docker 容器(因为 Docker 容器必须运行在 Linux 内核上)。
安装步骤
1. 安装 Docker CLI
brew install docker
2. 安装 Colima
brew install colima
3. 启动 Colima
# 默认配置启动(2 CPU, 2GB 内存, 60GB 磁盘)
colima start
# 或自定义资源配置,如果搞rust的docker编译建议内存分配多一些
colima start --cpu 4 --memory 8 --disk 100
配置环境变量
编辑 ~/.zshrc,添加 Docker 主机配置:
export DOCKER_HOST="unix://${HOME}/.colima/docker.sock"
使配置生效:
source ~/.zshrc
验证安装
docker --version
docker info
docker run hello-world
Colima 常用命令
| 命令 | 说明 |
|---|---|
| colima start | 启动 Colima |
| colima stop | 停止 Colima |
| colima status | 查看状态 |
| colima list | 列出所有实例 |
| colima delete | 删除实例 |
| colima ssh | SSH 进入虚拟机 |
配置国内镜像加速
为什么 Docker 拉取镜像慢? Docker 官方镜像仓库 Docker Hub 位于境外,且镜像文件通常很大(几百 MB 到几 GB)。配置国内镜像加速器后,拉取速度可以从几十 KB/s 提升到几 MB/s。
注意:国内 Docker 镜像的可用性经常变化,如果下面的镜像失效,可以搜索“国内 Docker 镜像”获取最新可用地址。 注意:对于 Docker 镜像,没有较为通用可靠的方案,目前更加可靠的方法可能是使用一些其他方案,但是不公开了,公开了就容易被封。
编辑 Colima 配置文件:
colima ssh
在虚拟机内编辑或创建 /etc/docker/daemon.json:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.rainbond.cc",
"https://docker.1panel.live",
"https://hub.rat.dev"
]
}
EOF
退出 SSH 并重启 Colima:
exit
colima stop
colima start
安装 Docker Compose
brew install docker-compose
Docker 常用命令
| 命令 | 说明 |
|---|---|
| docker ps | 查看运行中的容器 |
| docker ps -a | 查看所有容器 |
| docker images | 查看本地镜像 |
| docker pull <image> | 拉取镜像 |
| docker run <image> | 运行容器 |
| docker stop <container> | 停止容器 |
| docker rm <container> | 删除容器 |
| docker rmi <image> | 删除镜像 |
开机自启动(可选)
brew services start colima
1.6 Xcode 安装
Xcode 是 Apple 官方的集成开发环境,用于开发 iOS、macOS、watchOS、tvOS 等平台的应用。
为什么需要 Xcode?
- iOS/macOS 开发必备:没有 Xcode 无法开发和发布 Apple 平台应用
- 编译工具链:很多开发工具需要 Xcode 提供的编译器(clang)
- 模拟器:提供 iPhone/iPad 模拟器用于调试
- React Native/Flutter 依赖:跨平台开发 iOS 应用也需要 Xcode
安装步骤
方式一:App Store 安装(推荐)
- 打开 App Store
- 搜索 “Xcode”
- 点击获取/安装
提示:Xcode 体积较大(约 12GB),建议在网络稳定时下载。App Store 下载速度在大陆通常还可以,因为 Apple 在国内有 CDN 节点。
方式二:安装 Command Line Tools(轻量方案)
如果你不做 iOS/macOS 原生开发,只需要编译工具(编译器、Git 等),可以只安装命令行工具,体积只有几百 MB:
xcode-select --install
在弹出的对话框中点击“安装”。
首次启动配置
安装完成后首次启动 Xcode,需要:
- 同意许可协议
- 输入管理员密码安装额外组件
或通过命令行完成:
# 同意许可协议
sudo xcodebuild -license accept
# 安装额外组件
sudo xcodebuild -runFirstLaunch
安装 iOS 模拟器
- 打开 Xcode
- 菜单栏选择 Xcode → Settings(或按
⌘,) - 选择 Platforms 标签页
- 点击 “+” 按钮,下载所需的 iOS 模拟器版本
验证安装
# 查看 Xcode 安装路径
xcode-select -p
# 查看 Xcode 版本
xcodebuild -version
# 查看可用模拟器
xcrun simctl list devices
1.7 Android Studio 安装
Android Studio 是 Google 官方的 Android 开发 IDE,基于 IntelliJ IDEA 构建。
为什么需要 Android Studio?
- 官方 IDE:提供最完整的 Android 开发支持
- 内置工具:集成了 SDK 管理器、模拟器、布局编辑器等
- 跨平台依赖:Flutter、React Native 开发 Android 应用都需要
- SDK 管理:方便管理多个 Android SDK 版本
安装步骤
方式一:Homebrew 安装(推荐)
brew install --cask android-studio
方式二:官网下载
下载说明:Android Studio 官网在大陆访问可能较慢,建议使用 Homebrew 安装或者通过镜像网站下载。
- 访问 Android Studio 官网
- 下载 macOS 版本(选择对应芯片架构)
- 打开
.dmg文件,将 Android Studio 拖入 Applications 文件夹
首次启动配置
注意:首次启动时会下载 SDK 和工具,这些资源位于 Google 服务器。在大陆网络下可能下载很慢或失败,可以配置代理或跳过后手动配置。
- 启动 Android Studio
- 如果提示导入设置,选择 “Do not import settings”
- 选择 “Standard” 安装类型
- 选择 UI 主题
- 等待 SDK 和必要组件下载完成
配置 SDK 国内镜像
Android SDK 组件需要从 Google 服务器下载,在大陆网络下可能需要配置代理:
- 打开 Android Studio
- 菜单栏选择 Android Studio → Settings(或按
⌘,) - 选择 Appearance & Behavior → System Settings → HTTP Proxy
- 选择 “Auto-detect proxy settings” 或手动配置代理
配置环境变量
为什么要配置环境变量? 配置ANDROID_HOME后,命令行工具(如adb、emulator)才能在任意目录下使用。这对于 Flutter、React Native 等跨平台开发框架也是必须的。
编辑 ~/.zshrc,添加:
export ANDROID_HOME="$HOME/Library/Android/sdk"
export PATH="$ANDROID_HOME/emulator:$PATH"
export PATH="$ANDROID_HOME/platform-tools:$PATH"
export PATH="$ANDROID_HOME/tools:$PATH"
export PATH="$ANDROID_HOME/tools/bin:$PATH"
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$PATH"
使配置生效:
source ~/.zshrc
验证安装
adb --version
安装额外 SDK 版本
- 打开 Android Studio
- 菜单栏选择 Android Studio → Settings
- 选择 Languages & Frameworks → Android SDK
- SDK Platforms:勾选需要的 Android 版本
- SDK Tools:确保安装以下组件:
- Android SDK Build-Tools
- Android Emulator
- Android SDK Platform-Tools
- Android SDK Command-line Tools
配置 Gradle 国内镜像
为什么需要配置 Gradle 镜像? Android 项目使用 Gradle 作为构建工具,依赖从 Maven Central 和 Google Maven 仓库下载。这些仓库都在境外,下载速度可能很慢。配置阿里云镜像后,项目构建速度会大幅提升。
项目级别配置,编辑项目根目录的 build.gradle 或 settings.gradle:
pluginManagement {
repositories {
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/google' }
google()
mavenCentral()
}
}
1.8 Git 安装
Git 是当今最流行的分布式版本控制系统,几乎所有的现代软件项目都使用 Git 进行版本管理。
为什么需要 Git?
- 版本控制:记录代码的每一次修改,随时可以回滚
- 协作开发:多人并行开发,分支合并
- 代码托管:与 GitHub/GitLab/Gitee 配合使用
- 开源参与:几乎所有开源项目都通过 Git 协作
安装步骤
macOS 通常自带 Git,但版本可能较旧。推荐通过 Homebrew 安装最新版本:
brew install git
或者通过安装 Xcode Command Line Tools 获取 Git:
xcode-select --install
验证安装
git --version
基础配置
为什么要配置? Git 需要知道“谁”在提交代码。这些信息会记录在每次提交中,方便团队协作时追溯修改者。
设置全局用户信息:
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱@example.com"
设置默认分支名:
git config --global init.defaultBranch main
查看配置:
git config --list
配置 SSH 密钥
为什么用 SSH 而不是 HTTPS?
- 无需重复输入密码:配置一次后,以后每次 push/pull 都不需要输入用户名密码
- 更安全:密钥对比密码更安全,不会被盗取
- 特别适合国内环境:HTTPS 克隆 GitHub 经常失败,SSH 相对更稳定
生成 SSH 密钥用于连接 GitHub/GitLab 等平台:
# 生成密钥
ssh-keygen -t ed25519 -C "你的邮箱@example.com"
# 启动 ssh-agent
eval "$(ssh-agent -s)"
# 添加密钥到 ssh-agent
ssh-add ~/.ssh/id_ed25519
# 复制公钥内容
pbcopy < ~/.ssh/id_ed25519.pub
将复制的公钥添加到 GitHub/GitLab 的 SSH Keys 设置中。
测试连接:
ssh -T git@github.com
ssh -T git@gitee.com
常用命令
| 命令 | 说明 |
|---|---|
| git clone <url> | 克隆仓库 |
| git add . | 添加所有文件到暂存区 |
| git commit -m "message" | 提交更改 |
| git push | 推送到远程仓库 |
| git pull | 拉取远程更新 |
| git branch | 查看分支 |
| git checkout -b <branch> | 创建并切换分支 |
| git status | 查看状态 |
| git log --oneline | 查看简洁日志 |
gp 快捷提交函数
为什么要这个函数? 日常开发中,git add . && git commit -m "xxx" && git push 是最高频的操作组合。这个函数将三个命令合并为一个,大幅提升效率。而且还设置了智能默认值,即使不传参数也能正常工作。
为了简化日常的 Git 提交操作,可以在 ~/.zshrc 中添加以下快捷函数:
# Git 快捷提交函数
# 用法: gp [提交信息] [分支名]
# 示例: gp "fix bug" -> 提交并推送到当前分支
# gp "new feature" dev -> 提交并推送到 dev 分支
# gp -> 使用 "update" 作为默认提交信息
gp() {
git add .
git commit -m "${1:-update}"
git push origin ${2:-$(git branch --show-current)}
}
使配置生效:
source ~/.zshrc
使用示例
# 快速提交并推送(默认提交信息为 "update")
gp
# 指定提交信息
gp "修复登录问题"
# 指定提交信息和分支
gp "新增功能" feature-branch
环境检查清单
完成所有安装后,可以运行以下脚本验证环境:
#!/bin/bash
echo "========== 开发环境检查 =========="
echo ""
echo "【Homebrew】"
if command -v brew &> /dev/null; then
echo " ✓ $(brew --version | head -1)"
else
echo " ✗ 未安装"
fi
echo ""
echo "【Git】"
if command -v git &> /dev/null; then
echo " ✓ $(git --version)"
else
echo " ✗ 未安装"
fi
echo ""
echo "【Rust】"
if command -v rustc &> /dev/null; then
echo " ✓ $(rustc --version)"
echo " ✓ $(cargo --version)"
else
echo " ✗ 未安装"
fi
echo ""
echo "【Java】"
if command -v java &> /dev/null; then
echo " ✓ $(java --version 2>&1 | head -1)"
else
echo " ✗ 未安装"
fi
echo ""
echo "【Node.js】"
if command -v node &> /dev/null; then
echo " ✓ Node $(node --version)"
echo " ✓ npm $(npm --version)"
else
echo " ✗ 未安装"
fi
echo ""
echo "【Colima】"
if command -v colima &> /dev/null; then
echo " ✓ $(colima version | head -1)"
if colima status &> /dev/null; then
echo " ✓ Colima 运行中"
else
echo " △ Colima 未启动"
fi
else
echo " ✗ 未安装"
fi
echo ""
echo "【Docker】"
if command -v docker &> /dev/null; then
echo " ✓ $(docker --version)"
else
echo " ✗ 未安装"
fi
echo ""
echo "【Xcode】"
if command -v xcodebuild &> /dev/null; then
echo " ✓ $(xcodebuild -version | head -1)"
else
echo " ✗ 未安装"
fi
echo ""
echo "【Android SDK】"
if command -v adb &> /dev/null; then
echo " ✓ $(adb --version | head -1)"
else
echo " ✗ 未安装或未配置环境变量"
fi
echo ""
echo "=================================="
将上述内容保存为 check-env.sh,执行:
chmod +x check-env.sh
./check-env.sh
常见问题
Q1: brew 命令找不到?
确保已将 Homebrew 添加到 PATH:
# Apple Silicon Mac
eval "$(/opt/homebrew/bin/brew shellenv)"
# Intel Mac
eval "$(/usr/local/bin/brew shellenv)"
Q2: brew install 下载很慢?
检查是否已配置国内镜像源,参考 1.1 节的镜像配置。
Q3: npm install 下载超时?
确认已配置淘宝镜像:
npm config set registry https://registry.npmmirror.com
Q4: Docker 拉取镜像失败?
- 确保 Colima 已启动:
colima start - 检查 DOCKER_HOST 环境变量是否配置正确
- 检查镜像加速配置是否正确
- 尝试更换其他镜像源
Q5: Xcode 下载太慢或失败?
- 确保网络稳定
- 可以尝试在 Apple Developer 网站直接下载
.xip文件 - 使用下载工具断点续传
Q6: Android Studio 首次启动卡在下载组件?
- 配置代理或使用 VPN
- 手动下载 SDK:从 Android SDK 下载命令行工具
- 取消代理设置后重试
Q7: adb 命令找不到?
确保已正确配置 ANDROID_HOME 环境变量,并将 platform-tools 添加到 PATH:
export ANDROID_HOME="$HOME/Library/Android/sdk"
export PATH="$ANDROID_HOME/platform-tools:$PATH"
source ~/.zshrc
完整的 ~/.zshrc 配置参考
以下是本章涉及的所有环境变量配置汇总:
# Homebrew 国内镜像
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"
export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api"
export PATH=/opt/homebrew/bin:$PATH
# Rust 镜像
export RUSTUP_DIST_SERVER="https://rsproxy.cn"
export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"
# Java(多版本管理)
export JDK8_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
export JDK11_HOME=/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
export JDK17_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
export JDK21_HOME=/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home
export JAVA_HOME=$JDK21_HOME
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
# JDK 版本切换函数
jdk() {
case $1 in
8) export JAVA_HOME=$JDK8_HOME ;;
11) export JAVA_HOME=$JDK11_HOME ;;
17) export JAVA_HOME=$JDK17_HOME ;;
21) export JAVA_HOME=$JDK21_HOME ;;
*) echo "Usage: jdk [8|11|17|21]" ; return 1 ;;
esac
echo "Switched to Java $(java -version 2>&1 | head -1)"
}
# nvm 和 Node.js
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
export NVM_NODEJS_ORG_MIRROR="https://npmmirror.com/mirrors/node"
# Docker (Colima)
export DOCKER_HOST="unix://${HOME}/.colima/docker.sock"
# Git 快捷提交函数
gp() {
git add .
git commit -m "${1:-update}"
git push origin ${2:-$(git branch --show-current)}
}
# Android SDK
export ANDROID_HOME="$HOME/Library/Android/sdk"
export PATH="$ANDROID_HOME/emulator:$PATH"
export PATH="$ANDROID_HOME/platform-tools:$PATH"
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$PATH"


浙公网安备 33010602011771号