Files
virtualbox_client/docs/git使用手册.md
T
2026-05-10 10:56:52 +08:00

432 lines
8.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <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 文件示例
```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)