# Git 使用手册 > 版本: 1.0 > 适用系统: Ubuntu 20.04 / 通用 > Git 版本: 2.25.1+ --- ## 目录 1. [Git 简介](#1-git-简介) 2. [安装与配置](#2-安装与配置) 3. [基础操作](#3-基础操作) 4. [分支管理](#4-分支管理) 5. [远程仓库](#5-远程仓库) 6. [撤销与回退](#6-撤销与回退) 7. [标签管理](#7-标签管理) 8. [常见工作流程](#8-常见工作流程) 9. [常用命令速查表](#9-常用命令速查表) --- ## 1. Git 简介 Git 是一个**分布式版本控制系统**,由 Linus Torvalds 于 2005 年创建。它能够高效地处理从小型到大型项目的版本管理,是目前最流行的版本控制工具。 ### 核心特点 - **分布式**: 每个开发者本地都有完整的代码仓库 - **高效**: 针对文件差异和分支操作进行了优化 - **数据完整性**: 所有数据在存储前都会计算校验和 - **支持非线性开发**: 轻量级分支,鼓励分支开发 --- ## 2. 安装与配置 ### 2.1 在 Ubuntu/Debian 上安装 ```bash # 更新软件包列表 sudo apt update # 安装 Git sudo apt install -y git # 验证安装 git --version ``` ### 2.2 在 CentOS/RHEL 上安装 ```bash sudo yum install -y git ``` ### 2.3 基本配置 ```bash # 配置用户名(提交时记录) 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 创建仓库 ```bash # 在当前目录初始化新仓库 git init # 克隆远程仓库 git clone <仓库地址> git clone <仓库地址> <本地目录名> ``` ### 3.2 文件状态 Git 文件有三种状态:**已修改 (modified)**、**已暂存 (staged)**、**已提交 (committed)** ```bash # 查看文件状态 git status # 以简洁模式查看 git status -s ``` 状态标识说明: - `??` - 未跟踪的文件 - `M` - 已修改 - `A` - 已暂存 - `D` - 已删除 ### 3.3 添加与提交 ```bash # 添加文件到暂存区 git add <文件名> # 添加指定文件 git add . # 添加所有变更 git add -A # 添加所有变更(包括删除) git add -p # 交互式分段添加 # 提交到本地仓库 git commit -m "提交说明" git commit -am "提交说明" # 跳过 git add(仅对已跟踪文件有效) # 修改最后一次提交 git commit --amend -m "新的提交说明" ``` ### 3.4 查看历史 ```bash # 查看提交历史 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 创建与切换 ```bash # 查看分支列表 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 合并与变基 ```bash # 合并指定分支到当前分支 git merge <分支名> # 变基操作(将当前分支的提交移至目标分支顶端) git rebase <分支名> # 交互式变基(合并、修改提交记录) git rebase -i HEAD~3 # 修改最近 3 个提交 ``` > **合并 vs 变基**: 合并保留完整历史,变基使历史更线性。公共分支推荐使用合并,个人分支可使用变基。 ### 4.3 删除分支 ```bash # 删除本地分支 git branch -d <分支名> # 安全删除(会检查是否已合并) git branch -D <分支名> # 强制删除 # 删除远程分支 git push origin --delete <分支名> ``` --- ## 5. 远程仓库 ### 5.1 管理远程仓库 ```bash # 查看远程仓库 git remote -v # 添加远程仓库 git remote add origin <仓库地址> # 修改远程仓库地址 git remote set-url origin <新地址> # 删除远程仓库 git remote remove origin ``` ### 5.2 推送与拉取 ```bash # 推送到远程仓库 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 处理冲突 ```bash # 当合并或拉取产生冲突时: # 1. 编辑冲突文件,保留需要的内容 # 2. 标记为已解决 git add <已解决冲突的文件> # 3. 完成合并 git commit # 中止合并 git merge --abort ``` --- ## 6. 撤销与回退 ### 6.1 撤销工作区修改 ```bash # 恢复文件到最近一次提交的状态 git checkout -- <文件名> git restore <文件名> # 新式语法 ``` ### 6.2 撤销暂存区 ```bash # 将文件从暂存区移出(保留工作区修改) git reset HEAD <文件名> git restore --staged <文件名> # 新式语法 ``` ### 6.3 回退提交 ```bash # 软重置(保留工作区和暂存区修改) 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. 标签管理 ```bash # 创建标签 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 适用于持续交付的项目: 1. 从 `main` 创建功能分支 2. 提交修改 3. 发起 Pull Request 4. 代码评审 + 自动化测试 5. 合并回 `main` 6. 立即部署 ### 8.3 日常开发流程示例 ```bash # 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 ` | | 查看状态 | `git status` | | 添加文件 | `git add ` | | 提交 | `git commit -m "msg"` | | 查看日志 | `git log --oneline --graph` | | 创建分支 | `git branch ` | | 切换分支 | `git switch ` | | 创建+切换 | `git switch -c ` | | 合并分支 | `git merge ` | | 推送 | `git push origin ` | | 拉取 | `git pull --rebase` | | 查看差异 | `git diff` | | 暂存修改 | `git stash` | | 恢复暂存 | `git stash pop` | | 查看远程 | `git remote -v` | --- ## 附录 ### .gitignore 文件示例 ```gitignore # 编译输出 *.o *.class *.exe *.dll # 依赖目录 node_modules/ vendor/ __pycache__/ # IDE 配置 .vscode/ .idea/ *.swp # 系统文件 .DS_Store Thumbs.db # 环境配置 .env *.local ``` ### 提交信息规范 推荐使用 [Conventional Commits](https://www.conventionalcommits.org/) 规范: ``` <类型>(<范围>): <简短描述> <详细描述> <尾部信息> ``` 类型包括:`feat`、`fix`、`docs`、`style`、`refactor`、`test`、`chore` 等。 --- > 本文档持续更新中... > 更多信息请访问 [Git 官方文档](https://git-scm.com/doc)