first commit

This commit is contained in:
2026-05-10 10:56:52 +08:00
commit 9dec38db60
35 changed files with 8206 additions and 0 deletions
+431
View File
@@ -0,0 +1,431 @@
# 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)