Git拉取远程分支无变化,如何恢复已拒绝的合并变更?
解决Git合并后重新获取已拒绝变更的方法
问题核心是:你之前合并远程branch2到branch1时,Git已经记录了那次合并的提交,所以现在拉取时会判定branch1已包含branch2的所有变更——哪怕你当时拒绝了部分内容。以下是具体解决步骤:
定位合并提交ID
先查看branch1的提交历史,找到那次合并远程branch2的记录:git log --oneline branch1找到类似
Merge branch 'branch2' into branch1的提交,记下它的commit ID(比如abc123)。查看被拒绝的变更内容
用以下命令导出那次合并中未被你接受的所有变更:git diff abc123^2 abc123这里
abc123^2指合并提交中来自branch2的父节点,对比后就能看到当时没合并到branch1的内容。应用被拒绝的变更
有两种常用方式:- 生成补丁并应用
先把变更导出为补丁文件:
切换到branch1后应用补丁:git diff abc123^2 abc123 > rejected_changes.patch
若出现冲突,手动修改冲突文件,标记冲突解决后提交:git checkout branch1 git apply rejected_changes.patchgit add <冲突文件路径> git commit -m "Apply previously rejected changes from branch2" - 逐个挑选提交合并
如果你明确知道当时拒绝的是branch2上的具体提交,可直接用cherry-pick单独合并:
先列出branch2上在那次合并之前的所有未被合并的提交:
然后逐个挑选需要的commit ID执行:git log --oneline branch2 ^abc123^2
遇到冲突时解决后,用git cherry-pick <目标提交ID>git cherry-pick --continue继续操作,或--abort终止。
- 生成补丁并应用
内容的提问来源于stack exchange,提问作者Kodak3993
相关产品推荐
相关产品推荐

