直接push失败提示rejected说明远程有新提交需先整合;pull冲突时需手动编辑删标记、git add、git commit;二进制文件冲突用git checkout --ours/--theirs选择版本。

直接 push 失败、提示 rejected 或 Updates were rejected,说明远程分支已有你本地没有的提交,Git 拒绝覆盖——这不是“代码错了”,而是版本历史出现了分叉,必须先整合再推送。
git pull 后出现 CONFLICT (content) 怎么办
这是最常见场景:你改了 src/utils.js,同事也改了同一段,git pull 尝试自动合并时卡住。Git 会把冲突块标记出来:
>>>>> 8a1f2c4
关键动作只有三步:
- 打开文件,删掉
、=======、>>>>>> 8a1f2c4这三行,只保留最终要留下的逻辑(比如const timeout = 3000;) - 执行
git add src/utils.js—— 这步漏掉,Git 仍认为冲突未解决 - 执行
git commit(消息可默认为Merge branch 'origin/main')
git status 显示 Unmerged paths 但没看到冲突标记
可能你还没真正触发合并流程,或者编辑器没识别 Git 状态。先确认:
- 终端运行
git ls-files -u,有输出才表示 Git 确实卡在冲突中 - VS Code 中打开项目根目录(确保能看到
.git文件夹),左下角应显示当前分支名和 Git 图标 - 若已打开冲突文件但没弹出「Accept Current Change」按钮,按
Ctrl+Shift+P输入Merge Editor: Open Merge Editor手动调出三栏视图
想避免 merge 提交污染历史,用 git pull --rebase
如果你本地只有几个小提交,且希望保持线性历史(比如 PR 审查更清晰),不要用 git pull,改用:
git pull --rebase origin main
这时冲突会逐个出现在你的每个本地提交上,而不是堆在一次 merge 里。每解决一个冲突后,必须执行:
git addgit rebase --continue
中途想放弃?用 git rebase --abort 回退到拉取前状态。
二进制文件或图片冲突怎么处理
文本编辑器打不开、VS Code 不显示合并按钮?说明是二进制文件(如 logo.png、data.xlsx)。Git 无法做行级比对,只能选一边:
- 保留你本地的版本:
git checkout --ours logo.png - 保留远程的版本:
git checkout --theirs logo.png - 然后统一执行
git add logo.png
注意:--ours 和 --theirs 的含义取决于操作类型——在 pull 或 merge 中,--ours 指当前分支(你本地),--theirs 指被合并进来的分支(远程);但在 rebase 中,含义会反转,务必结合 git status 输出判断。











