8.6 KiB
8.6 KiB
Git 使用手册
版本: 1.0
适用系统: Ubuntu 20.04 / 通用
Git 版本: 2.25.1+
目录
1. Git 简介
Git 是一个分布式版本控制系统,由 Linus Torvalds 于 2005 年创建。它能够高效地处理从小型到大型项目的版本管理,是目前最流行的版本控制工具。
核心特点
- 分布式: 每个开发者本地都有完整的代码仓库
- 高效: 针对文件差异和分支操作进行了优化
- 数据完整性: 所有数据在存储前都会计算校验和
- 支持非线性开发: 轻量级分支,鼓励分支开发
2. 安装与配置
2.1 在 Ubuntu/Debian 上安装
# 更新软件包列表
sudo apt update
# 安装 Git
sudo apt install -y git
# 验证安装
git --version
2.2 在 CentOS/RHEL 上安装
sudo yum install -y git
2.3 基本配置
# 配置用户名(提交时记录)
git config --global user.name "Your Name"
# 配置邮箱
git config --global user.email "your_email@example.com"
# 配置默认分支名(Git 2.28+)
git config --global init.defaultBranch main
# 配置默认文本编辑器
git config --global core.editor "vim"
# 查看当前配置
git config --list
配置文件的优先级: 项目级
.git/config> 全局~/.gitconfig> 系统级/etc/gitconfig
3. 基础操作
3.1 创建仓库
# 在当前目录初始化新仓库
git init
# 克隆远程仓库
git clone <仓库地址>
git clone <仓库地址> <本地目录名>
3.2 文件状态
Git 文件有三种状态:已修改 (modified)、已暂存 (staged)、已提交 (committed)
# 查看文件状态
git status
# 以简洁模式查看
git status -s
状态标识说明:
??- 未跟踪的文件M- 已修改A- 已暂存D- 已删除
3.3 添加与提交
# 添加文件到暂存区
git add <文件名> # 添加指定文件
git add . # 添加所有变更
git add -A # 添加所有变更(包括删除)
git add -p # 交互式分段添加
# 提交到本地仓库
git commit -m "提交说明"
git commit -am "提交说明" # 跳过 git add(仅对已跟踪文件有效)
# 修改最后一次提交
git commit --amend -m "新的提交说明"
3.4 查看历史
# 查看提交历史
git log
git log --oneline # 简洁模式
git log --graph # 图形化显示
git log --all # 显示所有分支
git log -p # 显示差异内容
git log --author="名字" # 按作者筛选
git log --since="2024-01-01" # 按时间筛选
# 查看某个文件的修改历史
git log -p <文件名>
git blame <文件名> # 每行最后修改者
4. 分支管理
4.1 创建与切换
# 查看分支列表
git branch # 本地分支
git branch -r # 远程分支
git branch -a # 所有分支
# 创建分支
git branch <分支名>
# 切换分支
git checkout <分支名>
git switch <分支名> # 新式语法
# 创建并切换分支
git checkout -b <分支名>
git switch -c <分支名>
# 重命名分支
git branch -m <旧名> <新名>
4.2 合并与变基
# 合并指定分支到当前分支
git merge <分支名>
# 变基操作(将当前分支的提交移至目标分支顶端)
git rebase <分支名>
# 交互式变基(合并、修改提交记录)
git rebase -i HEAD~3 # 修改最近 3 个提交
合并 vs 变基: 合并保留完整历史,变基使历史更线性。公共分支推荐使用合并,个人分支可使用变基。
4.3 删除分支
# 删除本地分支
git branch -d <分支名> # 安全删除(会检查是否已合并)
git branch -D <分支名> # 强制删除
# 删除远程分支
git push origin --delete <分支名>
5. 远程仓库
5.1 管理远程仓库
# 查看远程仓库
git remote -v
# 添加远程仓库
git remote add origin <仓库地址>
# 修改远程仓库地址
git remote set-url origin <新地址>
# 删除远程仓库
git remote remove origin
5.2 推送与拉取
# 推送到远程仓库
git push origin <分支名>
git push -u origin <分支名> # 首次推送,建立关联
git push --all # 推送所有分支
git push origin --tags # 推送所有标签
# 拉取远程更新
git pull # 拉取并合并(相当于 fetch + merge)
git pull --rebase # 拉取并变基(推荐)
git fetch # 仅拉取,不自动合并
5.3 处理冲突
# 当合并或拉取产生冲突时:
# 1. 编辑冲突文件,保留需要的内容
# 2. 标记为已解决
git add <已解决冲突的文件>
# 3. 完成合并
git commit
# 中止合并
git merge --abort
6. 撤销与回退
6.1 撤销工作区修改
# 恢复文件到最近一次提交的状态
git checkout -- <文件名>
git restore <文件名> # 新式语法
6.2 撤销暂存区
# 将文件从暂存区移出(保留工作区修改)
git reset HEAD <文件名>
git restore --staged <文件名> # 新式语法
6.3 回退提交
# 软重置(保留工作区和暂存区修改)
git reset --soft HEAD~1
# 混合重置(保留工作区,清空暂存区)- 默认模式
git reset --mixed HEAD~1
# 硬重置(丢弃所有修改)- 谨慎使用!
git reset --hard HEAD~1
# 回退到指定提交
git reset --hard <提交哈希>
# 生成一个新的反向提交来撤销修改
git revert HEAD # 撤销最近一次提交
git revert <提交哈希>
git reset与git revert的区别:reset会删除提交历史,revert会保留历史并新增一个反向提交。公共分支应使用revert。
7. 标签管理
# 创建标签
git tag <标签名> # 轻量标签
git tag -a <标签名> -m "说明" # 附注标签
# 查看标签
git tag
git tag -l "v1.*" # 匹配模式
# 推送标签到远程
git push origin <标签名>
git push origin --tags
# 删除标签
git tag -d <标签名>
git push origin --delete <标签名>
8. 常见工作流程
8.1 Git Flow 工作流
适用于有固定发布周期的项目:
main- 主分支,存放稳定版本develop- 开发分支feature/*- 功能分支release/*- 发布分支hotfix/*- 紧急修复分支
8.2 GitHub Flow
适用于持续交付的项目:
- 从
main创建功能分支 - 提交修改
- 发起 Pull Request
- 代码评审 + 自动化测试
- 合并回
main - 立即部署
8.3 日常开发流程示例
# 1. 更新主分支
git checkout main
git pull
# 2. 创建功能分支
git checkout -b feature/my-feature
# 3. 开发并提交
git add .
git commit -m "feat: 添加新功能"
# 4. 同步上游变更
git fetch origin
git rebase origin/main
# 5. 推送并创建 Pull Request
git push -u origin feature/my-feature
9. 常用命令速查表
| 操作 | 命令 |
|---|---|
| 初始化仓库 | git init |
| 克隆仓库 | git clone <url> |
| 查看状态 | git status |
| 添加文件 | git add <file> |
| 提交 | git commit -m "msg" |
| 查看日志 | git log --oneline --graph |
| 创建分支 | git branch <name> |
| 切换分支 | git switch <name> |
| 创建+切换 | git switch -c <name> |
| 合并分支 | git merge <name> |
| 推送 | git push origin <branch> |
| 拉取 | git pull --rebase |
| 查看差异 | git diff |
| 暂存修改 | git stash |
| 恢复暂存 | git stash pop |
| 查看远程 | git remote -v |
附录
.gitignore 文件示例
# 编译输出
*.o
*.class
*.exe
*.dll
# 依赖目录
node_modules/
vendor/
__pycache__/
# IDE 配置
.vscode/
.idea/
*.swp
# 系统文件
.DS_Store
Thumbs.db
# 环境配置
.env
*.local
提交信息规范
推荐使用 Conventional Commits 规范:
<类型>(<范围>): <简短描述>
<详细描述>
<尾部信息>
类型包括:feat、fix、docs、style、refactor、test、chore 等。
本文档持续更新中...
更多信息请访问 Git 官方文档