【Git】Git 系统性使用指南
·
Git 系统性使用指南
Git 是分布式版本控制系统,用于高效管理项目代码。本文从基础到高级,全方位总结 Git 核心概念、命令与最佳实践。
一、Git 基础
1. 安装与配置
# 安装(以 Ubuntu 为例)
sudo apt install git
# 配置用户信息(全局)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 查看配置
git config --list
2. 初始化仓库
# 新建仓库
git init my-project
cd my-project
# 或克隆现有仓库
git clone https://github.com/username/repository.git
3. 核心概念:工作区、暂存区、版本库
- 工作区:本地文件目录
- 暂存区:临时保存待提交的修改(
git add后) - 版本库:Git 仓库的核心(
.git目录)
4. 基础操作
(1)查看状态
git status
(2)添加文件到暂存区
# 添加单个文件
git add file.txt
# 添加所有文件
git add .
# 添加指定目录
git add src/
(3)提交到版本库
# 提交暂存区文件
git commit -m "提交说明"
# 跳过暂存区,直接提交工作区已跟踪的文件
git commit -am "提交说明"
(4)查看差异
# 工作区 vs 暂存区
git diff
# 暂存区 vs 版本库
git diff --staged # 或 git diff --cached
# 工作区 vs 版本库
git diff HEAD
(5)查看提交日志
# 查看完整日志
git log
# 简洁日志(一行显示)
git log --oneline
# 图形化显示分支历史
git log --graph --all --oneline
二、分支管理
1. 分支基础操作
(1)创建分支
git branch dev # 创建名为 dev 的分支
(2)切换分支
git checkout dev # 切换到 dev 分支
# 或使用新版命令
git switch dev
(3)创建并切换分支
git checkout -b dev # 创建 dev 并切换
# 或
git switch -c dev
(4)查看分支
git branch # 查看本地分支
git branch -a # 查看所有分支(本地+远程)
2. 合并分支
(1)普通合并
# 切换到目标分支(如 master)
git checkout master
# 合并 dev 分支到 master
git merge dev
(2)解决合并冲突
当合并冲突时,Git 会标记冲突文件。手动编辑文件后:
git add conflict-file.txt # 标记冲突已解决
git commit -m "解决合并冲突"
3. 删除分支
# 删除已合并的分支
git branch -d dev
# 强制删除未合并的分支
git branch -D dev
三、远程仓库操作
1. 关联远程仓库
# 查看远程仓库
git remote -v
# 添加远程仓库(origin 为默认名称)
git remote add origin https://github.com/username/repo.git
# 修改远程仓库 URL
git remote set-url origin https://github.com/username/new-repo.git
2. 推送与拉取
(1)推送本地分支到远程
git push origin master # 推送 master 分支
git push -u origin master # 首次推送并关联(后续可直接 git push)
(2)拉取远程更新
# 抓取远程更新但不合并
git fetch origin
# 拉取并合并(fetch + merge)
git pull origin master
3. 远程分支管理
# 查看远程分支
git branch -r
# 删除远程分支
git push origin --delete dev
四、撤销与回退
1. 撤销工作区修改
git checkout -- file.txt # 丢弃工作区修改(恢复到暂存区状态)
# 或新版命令
git restore file.txt
2. 撤销暂存区修改
git reset HEAD file.txt # 从暂存区移除(保留工作区修改)
# 或新版命令
git restore --staged file.txt
3. 撤销提交(git reset)
git reset 有三种模式,通过 --soft/--mixed/--hard 区分:
| 模式 | 作用 |
|---|---|
--soft |
仅撤销提交,修改保留在暂存区 |
--mixed |
默认模式,撤销提交和暂存区,修改保留在工作区 |
--hard |
彻底撤销,丢弃所有修改(慎用!) |
# 示例:撤销最近 1 次提交
git reset --soft HEAD~1 # 保留修改在暂存区
git reset --mixed HEAD~1 # 保留修改在工作区(默认)
git reset --hard HEAD~1 # 彻底丢弃修改
4. 反转提交(git revert)
创建新提交来撤销历史提交(不修改历史,适合公共分支):
git revert HEAD # 撤销最近一次提交
git revert commit-hash # 撤销指定提交
5. 查看操作历史(git reflog)
记录所有 HEAD 移动(可用于恢复误删的提交):
git reflog # 查看操作历史
git reset --hard HEAD@{n} # 恢复到指定操作
五、标签管理
1. 创建标签
# 轻量标签(仅指向提交)
git tag v1.0
# 附注标签(包含标签信息)
git tag -a v1.0 -m "版本 1.0 发布"
2. 查看标签
git tag # 查看所有标签
git show v1.0 # 查看标签详情
3. 推送标签到远程
git push origin v1.0 # 推送单个标签
git push origin --tags # 推送所有标签
4. 删除标签
# 删除本地标签
git tag -d v1.0
# 删除远程标签
git push origin --delete v1.0
六、高级操作
1. 暂存工作区(git stash)
临时保存未完成的修改(用于切换分支前):
# 暂存工作区
git stash save "临时保存的修改"
# 查看暂存列表
git stash list
# 应用暂存(不删除)
git stash apply stash@{0}
# 应用并删除暂存
git stash pop
# 删除暂存
git stash drop stash@{0}
2. 选择性合并提交(git cherry-pick)
将某个分支的特定提交合并到当前分支:
git cherry-pick commit-hash
3. 变基(git rebase)
将当前分支的提交“移动”到目标分支的最新提交之上(使历史更清晰):
# 在 dev 分支上,将 dev 的提交基于 master 最新
git checkout dev
git rebase master
⚠️ 注意:不要对公共分支使用 rebase(会修改历史)!
4. 二分查找 Bug(git bisect)
通过二分法快速定位引入 Bug 的提交:
git bisect start # 开始查找
git bisect bad # 标记当前提交为有 Bug
git bisect good v1.0 # 标记 v1.0 为正常
# Git 自动切换到中间提交,测试后标记 good/bad,直到找到 Bug 提交
git bisect reset # 退出查找
5. 查看文件修改历史(git blame)
逐行查看文件的修改者和时间:
git blame file.txt
6. 子模块(git submodule)
在一个 Git 仓库中嵌套另一个仓库:
# 添加子模块
git submodule add https://github.com/username/submodule.git path/to/submodule
# 克隆包含子模块的仓库
git clone --recursive https://github.com/username/repo.git
# 更新子模块
git submodule update --init --recursive
7. Git 别名配置
简化常用命令:
git config --global alias.co checkout # git co = git checkout
git config --global alias.br branch # git br = git branch
git config --global alias.ci commit # git ci = git commit
git config --global alias.st status # git st = git status
七、最佳实践
- 提交粒度:每次提交聚焦一个功能/修复,避免大而全的提交。
- 提交说明:使用清晰的描述(如
fix: 修复登录接口超时)。 - 分支策略:采用 Git Flow 或 GitHub Flow 等分支管理模型。
- 避免强制推送:除非是个人分支,否则不要使用
git push --force。
八、更多资源
- Git 官方文档:https://git-scm.com/doc
- Pro Git(在线书籍):https://git-scm.com/book/zh/v2
更多推荐



所有评论(0)