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