在MACOS安装和使用 Git 的方法
一、Git 介绍
Git 是一款开源的分布式版本控制系统,能够高效地跟踪文件变更、管理代码版本,是软件开发、文档协作等场景的核心工具。与集中式版本控制系统不同,Git 支持本地完整版本库存储,无需依赖网络即可完成大部分操作,同时具备强大的分支管理、协同开发能力,广泛应用于 GitHub、GitLab 等代码托管平台。在 macOS 系统中,Git 提供了多种安装方式,且操作逻辑与其他系统保持一致,本文将从安装到高级应用逐步讲解使用方法。
二、下载与安装 Git
macOS 下安装 Git 有 3 种主流方式,推荐根据自身需求选择,其中 Homebrew 安装 最便捷,适合大多数用户。
2.1 方式一:通过 Xcode Command Line Tools 安装(最简单)
macOS 自带的 Xcode 开发工具包含 Git,即使未安装完整 Xcode,也可单独安装其命令行工具:
-
打开「终端」(Terminal,可通过 Spotlight 搜索
Terminal快速启动); -
输入以下命令,系统会自动提示安装 Command Line Tools:
bashgit --version -
弹出安装弹窗后,点击「安装」,等待系统自动下载并配置完成;
-
验证安装:再次输入
git --version,若输出类似git version 2.39.3 (Apple Git-145)的版本信息,说明安装成功。
2.2 方式二:通过 Homebrew 安装(推荐,版本可控)
Homebrew 是 macOS 下的包管理器,可快速安装/更新 Git,适合需要最新版本或自定义配置的用户:
-
若未安装 Homebrew,先在终端执行以下命令安装(需联网,过程约 5-10 分钟):
bash/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
安装完成后,执行以下命令安装 Git:
bashbrew install git -
验证安装:输入
git --version,输出类似git version 2.45.1的信息即成功(版本号可能随更新变化); -
后续更新 Git 可执行:
bashbrew update && brew upgrade git
2.3 方式三:通过 Git 官网安装包安装(手动配置)
适合习惯图形化安装的用户,步骤如下:
- 访问 Git 官网下载页面:https://git-scm.com/download/mac;
- 点击下载对应 macOS 版本的
.dmg安装包(自动适配 Intel/Apple Silicon 芯片); - 打开安装包,按照向导提示点击「继续」「安装」,默认配置即可;
- 验证安装:打开终端输入
git --version,输出版本信息即成功。
三、Git 初级使用(基础操作入门)
初级使用聚焦「本地版本控制」核心功能,包括配置、创建仓库、提交变更、查看历史等,适合单独开发场景。
3.1 第一步:初始配置(必做)
安装后需配置用户名和邮箱,用于标识提交记录(与代码托管平台账号一致更佳):
-
配置用户名(替换为你的名称):
bashgit config --global user.name "Your Name" -
配置邮箱(替换为你的邮箱):
bashgit config --global user.email "your.email@example.com" -
查看配置是否生效:
bashgit config --list输出中应包含上述配置的
user.name和user.email。
3.2 第二步:创建本地仓库
仓库(Repository)是 Git 存储文件版本的目录,可通过两种方式创建:
3.2.1 新建仓库(从零开始)
-
终端中进入需作为仓库的文件夹(例如
Documents/MyProject):bashcd ~/Documents/MyProject # 替换为你的文件夹路径 -
初始化仓库,生成
.git隐藏目录(存储版本信息):bashgit init输出
Initialized empty Git repository in /Users/xxx/Documents/MyProject/.git/即成功。
3.2.2 克隆远程仓库(从 GitHub 等平台获取已有项目)
若需获取远程仓库(如 GitHub 上的项目),使用 git clone 命令:
bash
git clone https://github.com/username/repository-name.git # 替换为远程仓库地址
执行后会在当前目录创建与仓库同名的文件夹,包含完整项目文件和版本历史。
3.3 第三步:提交文件变更(核心流程)
Git 提交变更需经过「工作区 → 暂存区 → 版本库」三步,流程如下:
-
创建/修改文件 :在仓库目录下新建文件(如
test.txt),或修改已有文件; -
查看文件状态 :
bashgit status输出中会标记「未跟踪文件(Untracked)」或「已修改文件(Modified)」;
-
将文件添加到暂存区 (暂存区用于临时存放待提交的变更):
- 添加单个文件:
git add test.txt(替换为文件名) - 添加所有变更文件:
git add .(推荐,.表示当前目录所有文件)
- 添加单个文件:
-
提交到版本库 (生成永久版本记录,需填写提交说明,描述变更内容):
bashgit commit -m "首次提交:添加 test.txt 文件" # 引号内为提交信息,需简洁明了 -
提交成功后,再次执行
git status,会显示nothing to commit, working tree clean,表示工作区与版本库一致。
3.4 第四步:查看版本历史
如需查看过往提交记录,执行:
bash
git log
输出内容包含:提交 ID(一串字母数字)、提交者、提交时间、提交说明;
- 简化输出(只显示关键信息):
git log --oneline - 退出 log 查看:按
q键。
四、Git 中级使用(分支与远程协作)
中级使用聚焦「协同开发」核心功能,包括分支管理、远程仓库关联、拉取/推送代码等,适合多人协作场景。
4.1 分支管理(核心:避免开发冲突)
分支相当于项目的「平行副本」,可在分支上开发新功能,完成后再合并到主分支,不影响原有代码:
-
查看当前分支 :
bashgit branch输出中带
*的分支为当前分支(默认主分支为main或master); -
创建并切换到新分支 (开发新功能时使用):
bashgit checkout -b feature/login # 新建分支 feature/login 并切换(推荐) # 等价于:git branch feature/login(创建分支) + git checkout feature/login(切换分支) -
切换回主分支 :
bashgit checkout main # 或 master(根据实际主分支名称) -
合并分支 (新功能开发完成后,合并到主分支):
- 先切换到主分支:
git checkout main - 合并目标分支:
git merge feature/login(将 feature/login 分支的代码合并到 main)
- 先切换到主分支:
-
删除分支 (合并后无需保留的分支):
bashgit branch -d feature/login # 删除本地分支
4.2 远程仓库协作(关联 GitHub/GitLab)
远程仓库是代码的「云端存储中心」,用于多人共享代码,需先在 GitHub/GitLab 注册账号并创建仓库,再进行关联:
4.2.1 关联远程仓库
-
查看当前远程仓库关联:
git remote -v(首次关联时无输出); -
关联远程仓库(替换为你的远程仓库地址,从 GitHub 仓库页面复制
HTTPS地址):bashgit remote add origin https://github.com/username/your-repo.git(
origin是远程仓库的默认别名,可自定义)
4.2.2 推送本地代码到远程仓库
将本地版本库的代码推送到云端:
bash
git push -u origin main # 首次推送,-u 绑定本地 main 与远程 main 分支(后续可简化为 git push)
- 若提示需要登录:输入 GitHub/GitLab 账号密码(或使用 Token 登录,GitHub 已不支持密码直接推送,需在账号设置中生成 Personal Access Token)。
4.2.3 从远程仓库拉取代码
多人协作时,需先拉取远程最新代码,避免冲突:
bash
git pull origin main # 拉取远程 main 分支的最新代码到本地
4.2.4 克隆远程仓库(再次获取)
若需在另一台设备获取远程仓库代码,直接克隆:
bash
git clone https://github.com/username/your-repo.git # 自动关联远程仓库 origin
4.3 解决合并冲突(协作常见问题)
当多人修改同一文件的同一部分时,合并会出现冲突,需手动解决:
-
拉取代码时若提示冲突,终端会显示
Automatic merge failed; fix conflicts and then commit the result; -
打开冲突文件,会看到类似以下标记:
<<<<<<< HEAD(当前分支的代码) 本地修改的内容 ======= 远程分支的代码 >>>>>>> origin/main(远程分支名称) -
编辑文件,删除冲突标记(
<<<<<<<=======>>>>>>>),保留需要的代码; -
重新提交:
git add 冲突文件名→git commit -m "解决合并冲突:保留本地与远程核心逻辑"; -
推送代码:
git push。
五、Git 高级使用(效率提升与问题修复)
高级使用聚焦「效率优化」和「问题修复」,包括暂存变更、标签管理、忽略文件、撤销操作等,适合提升开发效率。
5.1 暂存变更(stash:临时保存工作区)
开发中若需切换分支,但当前工作区代码未完成不想提交,可使用 stash 暂存:
-
暂存当前工作区变更:
bashgit stash暂存后工作区恢复干净,可切换分支;
-
查看暂存列表:
bashgit stash list -
恢复暂存的变更(回到原分支后):
bashgit stash apply stash@{0} # 恢复第 0 个暂存(根据 stash list 显示的索引) # 恢复并删除暂存:git stash pop stash@{0}(推荐,避免暂存列表冗余) -
删除暂存:
git stash drop stash@{0}(未恢复时删除)
5.2 标签管理(tag:标记重要版本)
标签用于标记重要版本(如发布版本 v1.0.0),方便后续回溯:
-
创建标签 (在当前提交创建标签):
bashgit tag v1.0.0 # 轻量标签(仅标记提交) # 带说明的标签(推荐,更详细):git tag -a v1.0.0 -m "版本 1.0.0:首次正式发布" -
查看标签 :
bashgit tag # 列出所有标签 git show v1.0.0 # 查看标签详情 -
推送标签到远程仓库 :
bashgit push origin v1.0.0 # 推送单个标签 git push origin --tags # 推送所有标签 -
删除标签 :
bashgit tag -d v1.0.0 # 删除本地标签 git push origin --delete v1.0.0 # 删除远程标签
5.3 忽略文件(.gitignore:过滤无需跟踪的文件)
部分文件(如日志、缓存、IDE 配置文件)无需纳入版本控制,可通过 .gitignore 文件过滤:
-
在仓库根目录创建
.gitignore文件:bashtouch .gitignore -
编辑
.gitignore,添加需要忽略的文件/目录(每行一个),示例:# 忽略日志文件 *.log # 忽略缓存目录 node_modules/ # 忽略 IDE 配置文件 .idea/ .vscode/ # 忽略系统隐藏文件 .DS_Store -
保存文件后,执行
git add .gitignore和git commit -m "添加 .gitignore 文件",后续这些文件将不会被 Git 跟踪。
5.4 撤销操作(修改错误提交)
5.4.1 撤销工作区修改(未 add 到暂存区)
bash
git checkout -- test.txt # 撤销 test.txt 文件的工作区修改(恢复到最近一次 commit 状态)
5.4.2 撤销暂存区修改(已 add 但未 commit)
bash
git reset HEAD test.txt # 将 test.txt 从暂存区撤回到工作区
5.4.3 撤销最近一次提交(已 commit 但未 push)
bash
git reset --soft HEAD~1 # 撤销最近一次 commit,保留工作区和暂存区修改(可重新提交)
# 注意:--soft 保留修改,--hard 会删除修改(谨慎使用!)
5.4.4 修改最近一次提交说明(提交信息写错时)
bash
git commit --amend # 打开编辑器修改提交说明,保存后覆盖最近一次提交
5.5 日志筛选与查找
当提交记录较多时,可筛选日志快速定位:
-
查找包含特定关键词的提交:
bashgit log --grep "登录功能" # 查找提交说明包含「登录功能」的记录 -
查看指定文件的修改历史:
bashgit log -- test.txt # 查看 test.txt 文件的所有提交记录 -
查看某两次提交之间的差异:
bashgit diff 提交ID1 提交ID2 # 对比两个提交的代码差异(提交ID可通过 git log 查看)
六、常用命令
| 命令 | 功能说明 | 示例 |
|---|---|---|
git --version |
查看 Git 版本 | git --version |
git config --global user.name |
配置全局用户名 | git config --global user.name "Your Name" |
git config --global user.email |
配置全局邮箱 | git config --global user.email "your.email@example.com" |
git config --list |
查看所有配置 | git config --list |
git init |
初始化本地仓库 | cd ~/MyProject && git init |
git clone <url> |
克隆远程仓库 | git clone https://github.com/username/repo.git |
git status |
查看文件状态(未跟踪/已修改/已暂存) | git status |
git add <file> |
添加单个文件到暂存区 | git add test.txt |
git add . |
添加当前目录所有变更到暂存区 | git add . |
git commit -m "<msg>" |
提交暂存区变更到版本库 | git commit -m "添加登录功能代码" |
git log |
查看提交历史 | git log |
git log --oneline |
简化显示提交历史 | git log --oneline |
git branch |
查看本地分支 | git branch |
git branch <name> |
创建本地分支 | git branch feature/pay |
git checkout <branch> |
切换分支 | git checkout main |
git checkout -b <name> |
新建并切换分支 | git checkout -b feature/chat |
git merge <branch> |
合并指定分支到当前分支 | git merge feature/chat |
git branch -d <branch> |
删除本地分支(已合并) | git branch -d feature/chat |
git remote -v |
查看远程仓库关联 | git remote -v |
git remote add origin <url> |
关联远程仓库 | git remote add origin https://github.com/username/repo.git |
git push -u origin <branch> |
首次推送本地分支到远程 | git push -u origin main |
git push |
推送已关联分支的变更 | git push |
git pull origin <branch> |
拉取远程分支最新代码 | git pull origin main |
git stash |
暂存当前工作区变更 | git stash |
git stash list |
查看暂存列表 | git stash list |
git stash apply <index> |
恢复指定暂存 | git stash apply stash@{0} |
git stash pop <index> |
恢复并删除暂存 | git stash pop stash@{0} |
git tag <tagname> |
创建轻量标签 | git tag v1.0.0 |
git tag -a <tagname> -m "<msg>" |
创建带说明的标签 | git tag -a v1.0.0 -m "正式发布1.0版本" |
git tag |
查看所有标签 | git tag |
git push origin <tagname> |
推送标签到远程 | git push origin v1.0.0 |
git checkout -- <file> |
撤销工作区文件修改 | git checkout -- test.txt |
git reset HEAD <file> |
撤销暂存区文件(回到工作区) | git reset HEAD test.txt |
git commit --amend |
修改最近一次提交说明 | git commit --amend |
git log --grep "<keyword>" |
按关键词筛选提交历史 | git log --grep "修复bug" |
git diff <commit1> <commit2> |
对比两次提交的差异 | git diff a1b2c3d e4f5g6h |