讲师中心 微信公众号
AI工具推荐 视频效率加速

Git分支冲突后代码保留方法详解

轻伟小哥_9528

轻伟小哥_9528

发布时间:2026-10-31 07:13:30

|

513人浏览过

|

来源于php中文网

原创

Git合并冲突时部分修改“消失”是因为误用git checkout --ours/--theirs强制覆盖整个文件,而非手动编辑保留所需内容;正确流程是删除冲突标记、选择性保留修改、git add标记已解决、再git commit。

git分支冲突后代码保留方法详解

冲突发生后,代码不会自动丢,但“保留”不是默认动作——它取决于你用什么命令、在什么状态、是否处理了未跟踪文件。

git merge 冲突时,为什么部分修改“消失”了

执行 git merge 出现冲突后,Git 会把双方修改都保留在工作区,但只把无冲突部分放进暂存区;有冲突的文件会处于 Unmerged 状态,git status 显示为红色。此时如果直接 git checkout --ours 或 git checkout --theirs,会强制覆盖整个文件内容,导致另一方的改动被清空。

  • 误操作常见于:看到冲突提示后没细看文件列表,直接对所有冲突文件批量执行 git checkout --ours
  • --ours 指的是当前分支(MERGE_HEAD 之前)的版本,--theirs 指的是被合并分支的版本——注意:rebase 场景下含义相反
  • 真正安全的做法是先打开冲突文件,手动保留需要的部分,再 git add 标记为已解决

stash pop 后冲突,代码“回不去了”的真实原因

很多人在 git stash pop 后发现代码不对,不是 stash 丢了,而是应用到了错误的 HEAD 上。典型场景是:你在 main 分支上 stash,然后 git checkout feat-x,再 git stash pop —— 这时 stash 是应用到 feat-x 分支上的,如果该分支和 main 的文件差异大,就容易触发冲突,且恢复路径变复杂。

digital-solution-designer
digital-solution-designer

系统化设计数字化解决方案,涵盖方案类型识别、政策背景分析、需求分析、建设思路设计、架构设计(业务、功能、数据、技术四维度)、技术选型、具体建设内容、实施规划、风险评估和投资估算的全流程能力。适用于规划类、申报类、可研类、投标类和工作汇报类等多种方案产出场景,覆盖政府数字化转型和企业数字化转型两大核心领域。

下载
  • stash 默认不保存未跟踪文件(?? file.txt),pop 后这些文件还在原地,可能和新应用的修改重名、覆盖或引发逻辑错误
  • 如果 pop 后出现冲突,git stash drop 不会执行,stash 记录仍在;但若你手快 git stash pop 失败又补了 git stash drop,那条 stash 就真没了
  • 恢复方式:用 git stash apply stash@{0}(不删除)反复试,配合 git diff 确认内容是否完整

未跟踪文件(untracked files)是最大盲区

Git 对未跟踪文件几乎“视而不见”:stash 不收、checkout 不动、merge 不管。它们始终躺在工作区,却可能在你切分支、pop stash、merge 后悄悄混入新上下文,造成行为异常或编译失败。

  • 判断是否存在未跟踪文件:git status --porcelain | grep "^??"
  • 想一并管理?stash 时必须加 -u:git stash push -u -m "wip"
  • 不想进版本库但又怕丢失?临时 git add -N path/to/file(告知 Git “我知道它存在”,但不加入内容)
  • 真要清理?git clean -n 先预览,确认无误再 git clean -fd

最常被忽略的点:冲突解决不是“删掉标记就完事”,而是“删标记 + git add + git commit”三步闭环;少任何一步,Git 都认为冲突还存在。尤其在 IDE 里点“解决冲突”后,别忘了手动 git add,否则 git status 仍显示红色,git commit 会报错。

热门AI工具

更多
Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

相关专题

更多
自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

6879

2023.07.05

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

1940

2023.07.06

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

1154

2023.07.24

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4477

2024.04.09

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4321

2024.04.09

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

60

2026.10.28

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

20

2026.10.28

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

40

2026.10.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

140

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
vscode手册
vscode手册

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 8.1万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn