← 返回博客列表

Git如何从上游仓库拉取代码到当前仓库

Vic.Wang2026/07/13222 阅读1 喜欢最近更新 2026/07/13 11:33:18

本文发布时间较早,文中提及的技术方案与接口可能已经过时,请注意甄别参考。

平常工作中,当需要新创建一个网站并且这个网站和已有的某个网站结构类似、大部分页面一样,只是少数几个页面风格不一样,这时候往往会从已有网站复制一份代码重新弄个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 upstream

2、合并到你当前本地分支(最常用)

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 upstream

2、合并时加参数 允许无关历史

# 主分支是 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

分享:微博QQ空间X