From 898b52edcb47bcb3e9d6106e74ca73e74ea01e70 Mon Sep 17 00:00:00 2001 From: sillylaird Date: Thu, 3 Sep 2026 00:33:59 +0000 Subject: import live www.sillylaird.ca webroot --- .../git-workflow/references/conflict-resolution.md | 148 +++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 .agents/skills/git-workflow/references/conflict-resolution.md (limited to '.agents/skills/git-workflow/references/conflict-resolution.md') 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 +``` + +### 4. 完成合并 + +```bash +# 对于 merge 冲突 +git commit + +# 对于 rebase 冲突 +git rebase --continue +``` + +## 冲突处理策略 + +### 保留当前分支版本 + +```bash +git checkout --ours +git add +``` + +### 保留传入分支版本 + +```bash +git checkout --theirs +git add +``` + +### 放弃合并 + +```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 +``` -- cgit v1.2.3