Git如何从上游仓库拉取代码到当前仓库
本文发布时间较早,文中提及的技术方案与接口可能已经过时,请注意甄别参考。
平常工作中,当需要新创建一个网站并且这个网站和已有的某个网站结构类似、大部分页面一样,只是少数几个页面风格不一样,这时候往往会从已有网站复制一份代码重新弄个Git仓库修改,当你上线后领导说参考网站加了新功能,你把他加到当前网站上,你会怎么做?
这时候就需要用到 Git 的上游仓库功能了
具体做法是添加上游仓库,拉取上游仓库代码,然后合并。
查看关联的远程仓库
git remote -v如果你还没有添加上游仓库,只会看到你自己 fork 后的仓库(origin)
有 upstream 才代表已配置上游
添加上游仓库
git remote add upstream 上游仓库地址示例:
git remote add upstream https://github.com/xxx/original-repo.git上游仓库 = 你参考的那个 Git 仓库
拉取上游仓库最新代码(核心命令)
1、拉取上游所有分支(不自动合并)
git fetch upstream2、合并到你当前本地分支(最常用)
git merge upstream/main如果主分支名是 master
git merge upstream/master一键同步(拉取+合并)
git pull upstream main这个命令 = git fetch + git merge
同步完成后推送到自己的远程仓库
git push origin main完整一套命令(直接复制使用)
# 1. 添加上游仓库(首次)
git remote add upstream https://github.com/xxx/upstream-repo.git
# 2. 拉取上游最新代码
git fetch upstream
# 3. 合并到本地
git merge upstream/main
# 4. 推送到自己远程仓库
git push origin main总结:
1、upstream = 上游仓库
2、origin = 你自己的仓库
3、同步流程:fetch -> merge -> push
4、最常用一键命令:git pull upstream main
解决 fatal: refusing to merge unrelated histories
报错原因:本地仓库 和 上游仓库 没有共同提交历史,Git 默认拒绝合并不相关历史
方案1: 强制允许合并不相关历史(最常用)
1、先拉取上游代码
git fetch upstream2、合并时加参数 允许无关历史
# 主分支是 main
git merge upstream/main --allow-unrelated-histories
# 主分支是 master
git merge upstream/master --allow-unrelated-histories方案2: 直接 pull 带上参数(一步到位)
git pull upstream main --allow-unrelated-histories如果出现代码冲突,需要手动解决
若有共鸣,不妨点个喜欢
本文地址:https://www.mingsixue.com/blog/detail/Git-remote-upstream
文章若需转载,请附上原文链接,谢谢配合。^_^