协同开发疑问:本地未提交代码时Pull GitHub更新会被覆盖吗?
当本地修改遇上远程更新,Git Pull会发生什么?
嘿,这个问题太接地气了——团队协作开发时几乎每个人都会碰到这种场景!先给你吃个定心丸:你的本地代码不会被直接覆盖,Git的设计就是为了保护开发者的本地改动,具体分两种情况:
情况1:本地改动和远程更新无冲突
如果你们俩修改的是不同文件,或者同一文件的不同代码段,Git会自动完成「拉取远程更新 + 合并本地改动」的操作:
- 执行
git pull后,Git会把远程的新更新和你本地的修改无缝整合到一起 - 你只需要检查合并后的代码逻辑没问题,就可以正常
git commit+git push把整合后的版本推回远程仓库
情况2:本地改动和远程更新出现冲突
如果你们刚好改了同一文件的同一部分,Git没法自动判断该保留哪部分,就会触发合并冲突:
git pull会暂停执行,明确提示你有冲突需要手动解决- 冲突文件里会出现Git的专属标记,格式大概是这样:
<<<<<<< HEAD 这是你本地刚刚编写的代码内容 ======= 这是你朋友推送到远程的代码内容 >>>>>>>> [远程提交的哈希值] - 你需要手动编辑这个文件:删掉冲突标记,结合需求保留或调整两边的代码
- 解决完冲突后,用
git add <冲突文件名>告诉Git冲突已处理完毕 - 最后执行
git commit完成合并,再git push就可以把整合后的版本推回远程
几个实用小建议
- 每次Pull前,尽量先把本地改动
git commit(哪怕是临时提交,之后可以用rebase整理提交记录),或者用git stash暂存未完成的改动,这样Git合并时逻辑会更清晰 - 在Eclipse里,Git插件会高亮显示冲突文件,还提供可视化的合并工具,比手动改标记高效很多
- 永远记住:Git不会悄无声息覆盖你的代码,任何冲突都需要你手动确认,所以放心大胆操作就好
内容的提问来源于stack exchange,提问作者CodingTil
相关产品推荐
相关产品推荐

