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

Git同文件协作冲突:拉取他人代码不丢失本地修改的处理方案

Git协作冲突解决指南

一、不丢失本地修改的前提下拉取远程改动

三种常用方案,按需选择:

1. 暂存本地修改后拉取

适合临时保存未完成的修改,后续恢复:

  • 暂存本地所有修改:
    git stash
    
  • 拉取远程最新改动:
    git pull origin <分支名>
    
  • 恢复暂存的本地修改,若有冲突Git会自动提示:
    git stash pop
    
  • 打开冲突文件,手动处理<<<<<<<、=======、>>>>>>>标记的内容,之后提交:
    git add <冲突文件>
    git commit -m "解决本地与远程的内容冲突"
    

2. 变基拉取(保持提交历史线性)

偏好整洁提交历史的场景推荐使用:

  • 执行变基拉取,Git会将本地提交自动放在远程提交之后:
    git pull --rebase origin <分支名>
    
  • 若出现冲突,先手动解决冲突文件,然后继续变基:
    git add <冲突文件>
    git rebase --continue
    
  • 中途想放弃变基可执行:
    git rebase --abort
    

3. 手动合并远程分支

适合需要明确控制合并过程的场景:

  • 拉取远程分支到本地临时分支:
    git fetch origin <分支名>:temp-branch
    
  • 切换回工作分支,合并临时分支:
    git checkout <你的分支名>
    git merge temp-branch
    
  • 解决冲突后提交,最后删除临时分支:
    git add <冲突文件>
    git commit -m "合并远程改动并解决冲突"
    git branch -d temp-branch
    

二、文件重命名后的冲突处理

Git会基于文件内容相似度自动识别重命名,但如果远程对原文件有修改、本地又完成了重命名,按以下步骤处理:

  1. 先拉取远程最新改动
    用上述任意一种方式拉取远程代码,Git会提示原文件存在远程修改、本地有重命名操作的冲突。

  2. 解决重命名+内容冲突

    • 若Git已识别到重命名:远程对原文件的修改会被映射到新文件名上,直接打开新文件解决内容冲突即可。
    • 若Git未识别到重命名(如文件内容改动过大):会出现原文件(远程修改版)和新文件(本地重命名版)同时存在的情况,此时:
      • 将远程原文件的修改手动合并到本地新文件中;
      • 删除冗余的原文件:
        git rm <原文件名>
        
      • 添加新文件并提交:
        git add <新文件名>
        git commit -m "解决重命名文件与远程的冲突"
        
  3. 规范重命名操作(避免后续冲突)
    后续重命名文件时,尽量用Git命令执行,让Git明确记录重命名操作:

    git mv <原文件名> <新文件名>
    git add .
    git commit -m "重命名XXX文件为XXX"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:46:01