Git Cherry Pick后Dev向QA提PR仍显示已提交代码问题求助
Git PR显示虚假差异的原因与解决办法
原因解释
Git判断分支差异不是对比文件内容,而是基于提交历史链。你在dev上的是合并提交e105xfb,而qa上通过git cherry-pick生成的是一个全新的提交——虽然文件内容和e105xfb完全一致,但这个新提交的ID、父提交记录都和e105xfb不一样。
在PR对比时,Git会检查dev有但qa没有的提交,e105xfb正好在这个范围内,所以即使内容无变化,PR依然会把该提交关联的文件标记为变更。
解决方法
方法1:合并dev到qa(推荐)
切换到qa分支,执行:
git merge dev
这个操作会让qa分支的提交历史包含dev上的e105xfb合并提交,对齐两边的历史链。之后再发起dev到qa的PR,Git就会识别到两边提交历史完全同步,显示“无可比较内容”。
方法2:回滚cherry-pick提交后重新合并
如果qa上的cherry-pick提交还没有被其他依赖,可以先回滚(已推送的分支建议用revert避免历史混乱):
# 先找到cherry-pick生成的提交ID,比如用git log查看 git revert <cherry-pick提交ID> git push origin qa
之后再执行git merge dev合并dev到qa,对齐历史。
方法3:忽略差异(临时方案)
如果不想修改提交历史,可以在PR描述里明确说明“内容已通过cherry-pick同步,仅提交历史不同”,让审核者忽略显示的差异。但这只是临时处理,后续分支对比仍会存在类似问题。
内容的提问来源于stack exchange,提问作者Thomas Raj
相关产品推荐
相关产品推荐

