You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何暂存含冲突的Git合并且不丢失冲突状态?

处理Git合并冲突时的分支切换方案

一、正确暂存未完成的合并冲突

别用普通的git stash,它会破坏Git对冲突的识别状态。要用专门的合并暂存命令:

  • 暂存当前冲突状态:git stash push --include-untracked -m "WIP 合并冲突未完成"
    这个命令会完整保留Git的合并冲突上下文,不是把冲突文件当成普通修改存起来。
  • 恢复暂存的合并:git stash pop
    执行后Git会立刻重新识别冲突状态,直接接着之前的进度解决就行。

二、用git worktree彻底隔离工作环境

如果经常需要在不同分支间切换,git worktree是更省心的选择——相当于给仓库开个独立“分身”:

  • 新建关联目标分支的工作目录:git worktree add ../临时工作目录 <要切换的分支名>
    这个新目录和原仓库完全独立,你在里面改代码、提交都不会影响原仓库的合并冲突状态。
  • 搞定其他分支的工作后,直接切回原仓库继续解决冲突即可,无需额外恢复操作。
  • 用完临时目录后,删除它:git worktree remove ../临时工作目录

三、已用普通stash导致状态丢失的补救办法

要是已经用了普通git stash,恢复后Git不认冲突了,试试这两步:

  1. 确认在原来的合并分支上,执行:git merge --continue
    Git会扫描文件里的冲突标记,重新进入合并冲突状态。
  2. 如果上面的命令没用,可尝试强制重置到合并冲突的初始状态:git reset --merge
    注意:这个操作会丢掉你已经解决的冲突进度,只有万不得已再用。

内容的提问来源于stack exchange,提问作者Ville Miekk-oja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 03:59:57