first commit

This commit is contained in:
2026-06-11 03:33:14 +08:00
commit 5f555bf342
599 changed files with 142347 additions and 0 deletions

View File

@@ -0,0 +1,148 @@
# 冲突处理详解
## 识别冲突
当 Git 无法自动合并时,会标记冲突:
```
<<<<<<< HEAD
// 当前分支的代码
const name = '张三'
=======
// 要合并的分支的代码
const name = '李四'
>>>>>>> feature/user-management
```
## 解决冲突步骤
### 1. 查看冲突文件
```bash
git status
```
### 2. 手动编辑文件,解决冲突
打开冲突文件,找到冲突标记(`<<<<<<<``=======``>>>>>>>`),手动编辑选择保留的内容或合并两者。
### 3. 标记已解决
```bash
git add <file>
```
### 4. 完成合并
```bash
# 对于 merge 冲突
git commit
# 对于 rebase 冲突
git rebase --continue
```
## 冲突处理策略
### 保留当前分支版本
```bash
git checkout --ours <file>
git add <file>
```
### 保留传入分支版本
```bash
git checkout --theirs <file>
git add <file>
```
### 放弃合并
```bash
# 放弃 merge
git merge --abort
# 放弃 rebase
git rebase --abort
```
## 预防冲突的最佳实践
1. **及时同步代码** - 每天开始工作前拉取最新代码
2. **小步提交** - 频繁提交小的改动
3. **功能模块化** - 不同功能在不同文件中实现
4. **沟通协作** - 避免同时修改同一文件
## 常见冲突场景
### 场景1同一文件不同位置修改
这种情况 Git 通常能自动合并,无需人工干预。
### 场景2同一行不同修改
需要手动决定保留哪个版本或合并两者。
### 场景3文件重命名
Git 通常能智能识别,但如果一个分支重命名而另一个分支修改内容,可能需要手动处理。
### 场景4二进制文件冲突
对于图片、PDF 等二进制文件,需要决定保留哪个版本:
```bash
# 保留当前分支的版本
git checkout --ours image.png
# 或保留传入分支的版本
git checkout --theirs image.png
```
## 冲突解决工具
### 使用 merge 工具
```bash
# 配置合并工具
git config --global merge.tool vimdiff
git config --global mergetool.prompt false
# 使用合并工具
git mergetool
```
### 使用 diff 工具
```bash
# 查看详细差异
git diff --ours
git diff --theirs
git diff --base
```
## Rebase 冲突特殊处理
Rebase 时冲突会逐个提交出现,处理方式:
```bash
git rebase develop
# 冲突1 -> 解决 -> git add -> git rebase --continue
# 冲突2 -> 解决 -> git add -> git rebase --continue
# ...
# 直到完成
```
如果某一步想跳过:
```bash
git rebase --skip
```
如果整体想放弃:
```bash
git rebase --abort
```