aboutsummaryrefslogtreecommitdiffstats
path: root/.agents/skills/git-workflow/references/conflict-resolution.md
diff options
context:
space:
mode:
authorsillylaird <sillyfanboy@gmail.com>2026-09-03 00:33:59 +0000
committersillylaird <sillyfanboy@gmail.com>2026-09-03 00:33:59 +0000
commit898b52edcb47bcb3e9d6106e74ca73e74ea01e70 (patch)
tree85c6ee5ad58b860144551184d4cf86b560c62b91 /.agents/skills/git-workflow/references/conflict-resolution.md
downloadwww-898b52edcb47bcb3e9d6106e74ca73e74ea01e70.tar.gz
www-898b52edcb47bcb3e9d6106e74ca73e74ea01e70.zip
import live www.sillylaird.ca webrootHEADmain
Diffstat (limited to '.agents/skills/git-workflow/references/conflict-resolution.md')
-rw-r--r--.agents/skills/git-workflow/references/conflict-resolution.md148
1 files changed, 148 insertions, 0 deletions
diff --git a/.agents/skills/git-workflow/references/conflict-resolution.md b/.agents/skills/git-workflow/references/conflict-resolution.md
new file mode 100644
index 0000000..0200343
--- /dev/null
+++ b/.agents/skills/git-workflow/references/conflict-resolution.md
@@ -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
+```