39人参与 • 2026-08-31 • 其他编程
在使用 git 进行代码管理时,合并分支是常见的操作之一。然而,在合并过程中可能会遇到冲突问题,尤其是在多人协作开发的场景下。
本文将详细介绍如何解决 git 合并冲突,并结合实际案例分析 git status 的输出含义。
在一次项目开发中,我需要将远程的 master 分支合并到本地的 chenjj 分支上。
在执行 git merge origin/master 时,遇到了文件冲突问题。以下是具体的操作步骤和解决方案。
在执行以下命令时:git merge origin/master 这条命令的含义是将远程仓库 origin 的 master 分支的更改合并到当前分支中
git merge origin/master
终端输出了多个文件的冲突信息,包括普通文件(如 .js、.vue、.json)和二进制文件(如 .woff2、.woff、.ttf)。
最终,git status 显示所有冲突已解决,但没有明确指出普通文件的冲突情况。

git 合并代码的基本流程
使用 git checkout <target-branch> 切换到需要合并代码的目标分支。
例如:
# 切换到目标分支(chnejj) git checkout chnejj
使用 git merge <source-branch> 将源分支的更改合并到目标分支。
例如:
# 合并 chnejj 分支到 master分支 git master chnejj

运行以下命令查看当前分支的状态
git status
输出示例:
92391@desktop-nsdkpq6 mingw64 ~/desktop/app/likeban-applet2 (chenjj|merging)
$ git status
on branch chenjj
your branch and 'origin/chenjj' have diverged,
and have 5 and 20 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
you have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
changes to be committed:
modified: common/auth.js
modified: common/router.js
modified: common/scanandq.js
new file: components/news-components/news-ad.vue
modified: env_dev.js
modified: env_prod.js
modified: pages.json
modified: pages/app/index.vue
modified: pages/city/login/index.vue
modified: pages/city/login/login.vue
modified: pages/city/reveal/revealpage.vue
modified: pages/customerservice/index.vue
modified: pages/governmentaffairs/hotwirefeedback/index.vue
modified: pages/gxbcyjs/jkzyjs/index.vue
modified: pages/gxbcyjs/yczyjs/index.vue
modified: pages/home/homebusiness.vue
modified: pages/home/homepage.vue
modified: pages/home/subsistencepayment.vue
modified: pages/newsbusiness/index.vue
modified: pages/payment/heatinggs/history.vue
new file: pages/skippage/carousel.vue
modified: pages/skippage/car.vue
new file: pages/skippage/pay.vue
modified: pages/venuereservation/components/appointmentdetial.vue
modified: pages/venuereservation/components/bookingdetial.vue
new file: pages/venuereservation/components/notice.vue
new file: pages/venuereservation/feedback.vue
modified: pages/venuereservation/index.vue
modified: pages/venuereservation/my.vue
modified: pages/wuye/wuyemain.vue
modified: pages/wuye/districtreport/districtreport.vue
modified: store/index.js
unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: static/iconfont/iconfont.css
both modified: static/iconfont/iconfont.ttf
both modified: static/iconfont/iconfont.woff
both modified: static/iconfont/iconfont.woff2
解释:
chenjj 和远程分支 origin/chenjj 已经分叉。
解决二进制文件冲突:
git checkout --ours -- <文件路径>git checkout --theirs -- <文件路径>#保留本地文件的指令 (我选择是保留本地的文件) git checkout --ours -- static/iconfont/iconfont.woff2 git checkout --ours -- static/iconfont/iconfont.woff git checkout --ours -- static/iconfont/iconfont.ttf git checkout --ours -- static/iconfont/iconfont.css # 保留远程的指令 git checkout --theirs -- static/iconfont/iconfont.woff2 git checkout --theirs -- static/iconfont/iconfont.woff git checkout --theirs -- static/iconfont/iconfont.ttf git checkout --theirs -- static/iconfont/iconfont.css # 选择完成之后还需要对刚才保留下来的文件进行提交 git add static/iconfont/iconfont.woff2 git add static/iconfont/iconfont.woff git add static/iconfont/iconfont.ttf git add static/iconfont/iconfont.css
解决冲突的指令:

提交保留下来的文件的指令:

此时我们已经解决完成了冲突,但是我们还是再写入查看当前分支状态的指令,再次确定一下所有的冲突都解决完成了
$ git status

此时输入指令之后,提示信息中没有冲突的提示了,这就证明了我们已经解决了所有的冲突
冲突已经解决:
common/auth.js、pages.json 等)。<<<<<<< head、=======、>>>>>>> origin/master),并保留了需要的内容。git add <文件路径> 标记这些文件为已解决。当前状态是“所有冲突已解决”:
git status 显示 all conflicts fixed but you are still merging.,说明冲突已经解决。验证是否还有未解决的冲突
为了确保没有遗漏的冲突,可以运行以下命令:
检查是否有未解决的冲突文件:
git diff --name-only --diff-filter=u
执行的 git diff --name-only --diff-filter=u 命令用于列出所有未解决的合并冲突文件。
--name-only 参数表示只显示文件名,不显示具体的差异内容,而 --diff-filter=u 参数表示只显示那些存在未解决冲突(unmerged)的文件。
该命令的输出结果是空的、没有输出任何文件名,这意味着在执行该命令时,已经没有未解决的冲突文件了,或者您可能需要先运行 git add 命令将解决冲突后的文件标记为已解决。
![]()
在确认所有冲突都已经解决后,运行以下命令完成合并
$ git commit -m "解决合并冲突"
![]()
完成合并后,将本地分支推送到远程:
$ git push origin chenjj:chenjj

如果远程分支已经有新的提交记录,而你的本地分支没有包含这些记录,git 可能会拒绝推送。
此时需要先拉取远程分支的更改并解决冲突:
git pull origin chenjj
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论