Git版本冲突解决方式
文章类型:实战
发布者:hp
发布时间:2026-07-07
当多人同时修改同一文件的同一部分,或者一个人删除文件而另一个人修改该文件时,Git无法自动合并这些变更,就会产生冲突。
git pull时本地和远程有冲突git rebase时产生冲突$ git merge feature-branch
Auto-merging index.js
CONFLICT (content): Merge conflict in index.js
Automatic merge failed; fix conflicts and then commit the result.$ git status
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: index.js<<<<<<< HEAD
const name = "张三";
const age = 25;
=======
const name = "李四";
const age = 30;
>>>>>>> feature-branch标记说明:
<<<<<<< HEAD:当前分支的内容开始=======:分隔符>>>>>>> feature-branch:要合并的分支内容结束步骤1:打开冲突文件
$ vim index.js # 或使用你喜欢的编辑器
步骤2:删除冲突标记并保留正确内容
冲突前:
<<<<<<< HEAD
const name = "张三";
=======
const name = "李四";
>>>>>>> feature-branch解决后:
const name = "王五"; // 根据实际需求决定保留或重写
步骤3:标记为已解决$ git add index.js
步骤4:提交合并$ git commit -m "解决合并冲突"保留当前分支版本(ours):
$ git checkout --ours index.js
$ git add index.js保留合并分支版本(theirs):
$ git checkout --theirs index.js
$ git add index.js启动Git自带的合并工具:
$ git mergetool配置VSCode作为合并工具:
$ git config --global merge.tool vscode
$ git config --global mergetool.vscode.cmd 'code --wait $MERGED'
推荐工具:# 1. 切换到主分支
$ git checkout master
# 2. 合并功能分支
$ git merge feature-login
Auto-merging src/login.js
CONFLICT (content): Merge conflict in src/login.js
# 3. 查看冲突
$ git status
# 4. 编辑解决冲突
$ code src/login.js
# 5. 标记已解决
$ git add src/login.js
# 6. 完成合并
$ git commit -m "合并登录功能,解决冲突"# 1. 拉取远程代码
$ git pull origin master
CONFLICT (content): Merge conflict in app.js
# 2. 解决冲突
$ vim app.js # 手动编辑
# 3. 添加并提交
$ git add app.js
$ git commit -m "解决pull冲突"
# 4. 推送到远程
$ git push origin master# 1. 变基操作
$ git rebase master
CONFLICT (content): Merge conflict in config.js
# 2. 解决冲突
$ vim config.js
# 3. 继续变基
$ git add config.js
$ git rebase --continue
# 如果想放弃变基
$ git rebase --abort解决:
git log查看提交历史解决:
# 查看所有冲突文件
$ git diff --name-only --diff-filter=U
# 批量处理
$ git checkout --ours . # 全部保留当前分支
$ git checkout --theirs . # 全部保留合并分支
解决:
# 撤销合并(未推送前)
$ git reset --hard HEAD~1
# 撤销合并(已推送)
$ git revert -m 1 <merge-commit-hash>git pull origin master| 命令 | 说明 |
|---|---|
git status | 查看冲突文件列表 |
git diff | 查看具体冲突内容 |
git add <file> | 标记冲突已解决 |
git commit | 提交合并结果 |
git merge --abort | 取消合并操作 |
git rebase --abort | 取消变基操作 |
git checkout --ours <file> | 保留当前分支版本 |
git checkout --theirs <file> | 保留合并分支版本 |
git mergetool | 启动可视化合并工具 |
Git冲突虽然常见,但掌握正确的解决方法后就不再可怕。记住以下要点:
暂无评论,快来发表第一条评论吧~