求助:如何合并非Git仓库中完成的代码修改
合并非Git开发人员修改的正确姿势
推荐方案:基于原始提交创建分支合并
这方法能让Git自动识别所有差异,不会直接覆盖:
- 先找到你当初给对方发压缩包时的Git提交哈希值,用
git log翻记录即可定位对应时间点的提交 - 基于那个旧提交新建分支:
git checkout -b external-fixes <原始提交哈希> - 将对方返回的压缩包里的文件全部替换到这个新分支中,确保文件路径和项目结构一致
- 提交外部修改:
git add .git commit -m "引入外部开发的修改" - 切回日常开发的主分支(比如
main或dev):git checkout main - 执行合并操作:
git merge external-fixes
此时Git会自动对比主分支从旧提交到现在的改动,以及外部分支的修改,存在冲突的地方会被标记出来,按常规冲突解决流程处理即可。
备选方案:手动对比文件修改
要是找不到当初的原始提交,或者想更精准控制每一处改动:
- 先把当前项目的所有文件备份到一个临时文件夹
- 将对方的压缩包解压到另一个独立的临时文件夹
- 用文件对比工具(比如VS Code自带的文件夹对比功能、Beyond Compare)逐个文件比对差异,把需要的改动手动复制到你的主分支工作区
- 最后提交手动合并后的修改:
git add .git commit -m "手动合并外部修改"
你之前操作无冲突的原因
你之前直接在基于当前主分支创建的新分支里覆盖文件,Git会认为新分支的文件是“最新版本”,合并时直接用新分支版本替换主分支内容,自然不会触发冲突提示。而基于原始提交创建分支时,Git能识别出两边都是从同一个旧版本衍生的修改,就能精准找出差异和冲突。
内容的提问来源于stack exchange,提问作者supremeism
相关产品推荐
相关产品推荐

