如何将仓库外修改的内容并入本地仓库再推送到remote/origin?
问题本质
你当前的本地代码是下载的ZIP包生成的,不包含远程仓库的提交历史记录,和远程的提交链没有关联,所以直接推送会被判定为版本不一致拒绝,直接拉取又会覆盖本地已修改的内容。
操作步骤(按顺序执行即可)
- 提前备份当前整个项目文件夹到其他路径,避免操作失误丢失修改内容
- 在项目根目录打开VS Code终端,执行
git init初始化本地Git仓库 - 执行
git remote add origin 你的远程仓库地址,将本地仓库和远程仓库关联 - 执行
git fetch origin拉取远程的所有提交记录到本地,不会合并改动,不会覆盖你现有代码 - 执行合并命令,主分支如果是master就把下面的main换成master:
git merge origin/main --allow-unrelated-histories - 此时会弹出合并冲突提示,打开VS Code的源代码管理面板,逐个处理冲突文件:需要保留自己的修改就选「保留当前更改」,需要保留远程的更新就选「保留传入更改」,两边改动都要保留就选「保留双方更改」,所有冲突处理完后保存全部文件
- 执行
git add .暂存所有改动,再执行git commit -m "合并本地修改与远程提交"完成提交 - 现在可以正常推送:推送到GitHub执行
git push origin main,推送到Heroku执行你原本的推送命令即可
后续使用建议
- 后续同步代码不要下载ZIP包,直接用
git clone 远程仓库地址克隆项目到本地,自带完整提交历史,不会出现本次的问题 - 每次修改代码前先执行
git pull拉取远程最新代码,再做修改,可大幅减少合并冲突的概率
内容的提问来源于stack exchange,提问作者Priyam
相关产品推荐
相关产品推荐

