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

执行git pull origin production拉取到分支后本地变更丢失问题咨询

问题原因

git pull 是 git fetch + git merge(默认配置)或 git fetch + git rebase(配置了pull.rebase = true时)的组合命令,本次问题触发原因属于以下两类之一:

  • 本地分支开启快进合并(fast-forward)且远程production分支提交进度完全覆盖本地image_carousel分支的提交基线,git直接将本地分支指针移动到production分支最新提交,未提交的本地变更若和拉取代码无冲突会被静默合并,视觉上表现为原变更消失;若存在冲突时你选择了以远程代码为准的冲突解决策略,会直接覆盖本地变更。
  • 本地变更未执行过git add或git commit操作,属于工作区未追踪变更,合并时若和远程production分支同路径文件完全冲突,git会直接用远程文件覆盖本地未提交内容,这部分变更不会录入git提交记录,容易出现丢失。

恢复已丢失的本地变更

  • 若之前的本地变更已经执行过git commit,执行git reflog查看操作记录,找到pull操作之前的提交哈希值,执行git reset --hard <提交哈希>即可恢复到pull之前的分支状态。
  • 若之前的变更只执行过git add未提交,执行git fsck --lost-found扫描git暂存区的悬空对象,对应变更的blob文件会保存在.git/lost-found/other目录下,手动提取恢复即可。
  • 若之前的变更完全没执行过git add/commit,属于工作区未追踪文件,git本身没有留存记录,可通过编辑器的本地历史记录、系统还原点等第三方方式恢复。

后续pull操作保留本地代码的正确流程

需要在持有本地变更的分支拉取其他分支代码时,按以下步骤操作即可避免变更丢失:

  1. 暂存本地所有变更:
git add .
git stash push -m "临时存储image_carousel本地变更"
  1. 执行pull操作拉取远程production分支:
git pull origin production
  1. 拉取完成后恢复之前暂存的本地变更:
git stash pop

如果恢复时出现代码冲突,手动解决冲突后正常提交即可。

内容的提问来源于stack exchange,提问作者kbc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:00:05