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

Git分支如何重新提交指定更改并恢复合并丢失的代码?

嘿,咱们一步步解决这个Git问题!

刚用Git没几周就碰到这种冲突后代码丢失的情况,太正常了,先别慌,我帮你理清问题根源,再给你具体的解决步骤,顺便优化下工作流程避免再踩坑。

先搞懂问题出在哪

你之前的操作顺序里,git stash→拉取develop解决冲突→git stash pop这个环节很容易出问题:拉取develop并解决冲突后,你的分支已经是合并后的状态了,这时候再把之前stash的代码pop出来,很可能和当前分支的代码再次冲突,你在处理的时候不小心删掉了File1里的非冲突代码,而且已经提交推送到Bitbucket了,所以现在需要先找回丢失的代码,再修正远程的提交。

第一步:找回File1里丢失的代码

Git的历史记录和stash都是咱们的救星,两种方法任选:

方法A:从提交历史里恢复

  1. 先看看File1的所有提交记录,找到代码还完整的那个版本:
    git log --oneline File1
    
    这会列出一串带哈希值的提交信息,找到你觉得代码没丢的那个提交(比如开头是f4d3a1的那条)。
  2. 把这个版本的File1恢复到本地:
    git checkout f4d3a1 -- File1
    
    现在打开File1看看,应该就能找回丢失的代码了。

方法B:从stash记录里恢复

如果你不确定提交历史,也可以看看之前存的stash:

git stash list

会列出你之前存的所有stash,比如stash@{0}就是最近的那个。先看看这个stash里的File1内容是不是你要的:

git stash show -p stash@{0} -- File1

如果里面有丢失的代码,直接恢复:

git checkout stash@{0} -- File1

第二步:修正提交,把File1和File2都弄对

现在本地的File1已经恢复,File2是你开发的内容,接下来整理提交:

  1. 把这两个文件的修改暂存:
    git add File1 File2
    
  2. 修正你之前的错误提交(因为已经推过了,所以用--amend替换最后一次提交):
    git commit --amend -m "恢复File1丢失的代码,提交我的特性开发文件File2"
    
    这个命令会把你最后一次提交的内容换成现在的修改,相当于“纠正”了之前的错误提交。

第三步:推送到Bitbucket

因为你已经推送过错误的版本,现在需要强制推送覆盖远程分支(重要提醒:如果有其他同事也在这个abc分支上工作,一定要先跟他们说一声,不然会覆盖他们的工作!):

git push origin abc --force

给你优化下工作流程,以后少踩坑

这次的问题很大程度是操作顺序导致的,以后试试这个更安全的流程:

  • 开发完先提交自己的工作,别用stash:
    git add .
    git commit -m "完成XX特性开发"
    
  • 然后拉取develop分支合并到你的特性分支:
    git pull origin develop
    
  • 如果碰到冲突,直接在当前分支解决,然后提交合并结果:
    git add .
    git commit -m "合并develop分支,解决冲突"
    

另外,建议每隔1-2天就拉一次develop到你的特性分支,别等开发完很久再合并,这样每次冲突的内容少,更容易处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:30:05