

## 为什么需要分支

多人协同开发时，分支可以保证每个人的开发互不影响，等到稳定后再合并到主干。

## 基本分支操作

| 命令 | 说明 |
|------|------|
| `git branch` | 列出本地分支 |
| `git branch <name>` | 创建新分支（基于当前 HEAD） |
| `git checkout <name>` | 切换到指定分支 |
| `git checkout -b <name>` | 创建并切换到新分支 |
| `git branch -d <name>` | 删除本地分支（删除前需先合并到其他分支） |
| `git branch -D <name>` | 强制删除未合并的分支 |
| `git branch -m <old> <new>` | 重命名分支 |

## 合并分支

```bash
# 先切换到目标分支（如 master）
git checkout master
git merge feature-branch
````

### 合并冲突

当两个分支对同一文件的同一部分做了不同修改并提交时，Git 无法自动合并，会产生冲突。需要手动编辑冲突文件解决，然后：

```bash
git add <file>       # 标记为已解决
git commit
```

## 分支开发工作流建议

- **master 分支**始终稳定，仅用于发布版本。
- 开发在**短期分支**（如 `feature/*`、`bugfix/*`）中进行。
- 完成测试后合并回 master。
- 多使用分支，养成好习惯。

## 远程分支与跟踪

### 拉取远程分支

```bash
git fetch origin                      # 获取远程所有分支
git branch stable origin/stable       # 创建本地分支并跟踪远程分支
git checkout stable                   # 切换到 stable 分支（会自动跟踪）
```

### 推送改名的本地分支到远程

```bash
git branch -m oldBranch newBranch     # 本地重命名
git push origin newBranch             # 推送新分支
git push --delete origin oldBranch    # 删除远程旧分支
```

## 贮藏（Stash）

当需要切换分支但不想提交当前修改时使用：

```bash
git stash                             # 保存当前修改，工作区变干净
git stash list                        # 查看所有贮藏
git stash apply                       # 恢复最近一次贮藏
git stash drop                        # 删除最近一次贮藏
git stash pop                         # 恢复并删除
```

> 更详细的命令可参见 [[Git 核心概念与基础操作]] (app://obsidian.md/Git%20%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5%E4%B8%8E%E5%9F%BA%E7%A1%80%E6%93%8D%E4%BD%9C)