-
2022-01-27 16:34:21
git remote add upstream https://github.com/xxxx/xxxx.git git fetch upstream tag vX.X git tag git push origin refs/tags/vX.X:refs/tags/vX.X
更多相关内容 -
同步fork的上游仓库代码更新:git pull upstream
2021-10-10 21:33:10在使用git管理项目的时候,不管是gitlab还是github项目,都可以通过fork将上游仓库的项目复制到自己仓库中,但是上游的仓库变更时,怎么同步更新自己仓库里的变化呢? 一般有两种方式,一种方式是将上游的仓库提...git pull upstream同步上游更新
在使用git管理项目的时候,不管是gitlab还是github项目,都可以通过fork将上游仓库的项目复制到自己仓库中,但是上游的仓库变更时,怎么同步更新自己仓库里的变化呢?
一般有两种方式,一种方式是将上游的仓库提merge request到自己的仓库去合并;另一种方式是每次在修改自己仓库复制的项目之前,先通过git pull upstream master去同步上游项目的更新。
git pull origin与git pull upstream区别
git pull origin是拉取自己或团队项目的更新到本地;git pull upstream是拉取fork的外部上游项目的更新到本地自己仓库中的项目中。
git pull origin
origin指的是源仓库,一般为git clone的仓库,如xxx/fastjson,是克隆后默认提交和拉取的仓库地址。
git pull upstream
upstream意指上游仓库,一般是fork 出的上游仓库,如alibaba/fastjson。
fork操作
无论是github还是gitlab都有fork操作,该操作相当于把外部的仓库里面的项目复制到自己仓库下。例如,对alibaba/fastjson项目进行fork,会在自己仓库出现tomcat/fastjson项目,这里的tomcat代指自己github或gitlab的用户名。
git clone ssh://git@github.com/tomcat/fastjson.git git pull // 默认是 git pull origin master,从bannidaer/fastjson的master分支拉代码 git pull upstream master // 从上游alibaba/fastjson的master分支拉代码
git pull upstream遇到 ‘upstream’ does not appear to be a git repository问题
在进行本地fork出的项目修改之前,想要先同步上游的更新,于是进行git pull upstream操作,出现如下问题:
fatal: 'upstream' does not appear to be a git repository fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
通过 git remote -v 检查,发现错误原因是 upstream repository 的地址是 ssh协议,而不是 https,并且没有指定upstream上游仓库地址而是自己origin的tomcat仓库。
origin ssh://git@github.com/tomcat/fastjson.git (fetch)
解决方案:
如果想要使用https协议的仓库地址,可以利用 git remote remove upstream ssh://…仓库地址 的方式移除掉原来的 upstream repository,再 git remote add upstream https://… 添加上新的地址。
% git remote add upstream ssh://git@github.com/alibaba/fastjson.git origin ssh://git@github.com/tomcat/fastjson.git (fetch) // 自己仓库的origin源项目 origin ssh://git@github.com/tomcat/fastjson.git (push) upstream ssh://git@github.com/alibaba/fastjson.git (fetch) // 外部上游仓库的项目 upstream ssh://git@github.com/alibaba/fastjson.git (push)
添加完上游仓库地址后,再次执行git pull upstream命令如下:
% git pull upstream master remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Compressing objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 764 bytes | 76.00 KiB/s, done. From ssh://git@github.com/alibaba/fastjson * branch master -> FETCH_HEAD * [new branch] master -> upstream/master Updating xxxxxx Fast-forward
由于之前配置了GOPRIVATE,项目中引用私有仓库的项目,就将之前https协议拉取代码的方式改成了ssh方式,这里指定ssh协议的上游仓库地址,如果你使用的是https协议可以指定https协议的上游仓库。
参考
-
GitHub 操作:同步 Fork 来的仓库(上游仓库)
2019-10-11 16:09:53GitHub 操作:同步 Fork 来的仓库 Fork 是 Github 上的常用操作之一,不同于 Star,Fork 会将进行 Fork 操作那一刻的仓库代码完全复制到自己的仓库下。Fork 之后,我们可能会为原仓库添加一个 Feature,之后发起 ...GitHub 操作:同步 Fork 来的仓库
Fork 是 Github 上的常用操作之一,不同于 Star,Fork 会将进行 Fork 操作那一刻的仓库代码完全复制到自己的仓库下。Fork 之后,我们可能会为原仓库添加一个 Feature,之后发起 Pull Request。
往往在 Fork 之后,原仓库的作者也会进行代码更新,与我们自身的更新在 Git Commit 树中会分叉,如下图所示:
在某些这样的时候,我们发起的 Pull Request 是有冲突的。就算没有冲突,及时在发送 Pull Request 之前同步原仓库的代码也是十分必要的。本文将会介绍同步 Fork 原仓库代码的方法。
Step 1. 添加 upstream
我们首先要在 Git 中配置指向上游仓库(即 Fork 前的原本仓库)的远程仓库。
查看当前的 remote 情况:
$ git remote -v # 列出当前的 remote 情况 > origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) > origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
添加上游仓库的地址:
$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
验证:
$ git remote -v > origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) > origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push) > upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch) > upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)
Step 2. 同步上游仓库代码
我们可以直接使用
git pull
命令同步upstream
的指定分支即可。为了更加保险,可使用
git pull --rebase
在本地解决可能发生的冲突。
Step 3. 上传到自己的仓库,发起PR
同步代码并解决冲突完成之后,可以将代码上传到自己的仓库中,并发起 Pull Request。
参考链接
-
Github同步上游库代码
2020-12-21 08:42:19GIT(分布式版本控制系统)当上游源码库发生提交改变的时候后我们fork下来的库是不会自动更新的,需要我们手动更新,本文简单介绍一下用命令行实现的过程;Pull Requests因开发人数比较多,我们采用了pr(Pull Requests...前段时间加了一个博客群,有幸参加了群主组织的一个开源项目,在多人开发中使用git也遇到了一些问题,这里总结一下,希望对大家有用;
GIT(分布式版本控制系统)当上游源码库发生提交改变的时候后我们fork下来的库是不会自动更新的,需要我们手动更新,本文简单介绍一下用命令行实现的过程;
Pull Requests
因开发人数比较多,我们采用了pr(Pull Requests)的方式操作,这里简单说下pr的操作流程,首先我们要找到项目然后Fork下来:
这样在我们自己的github上就会有对应的代码库:
然后根据ssh克隆fork库,这样我们就能在本地开发了,开发完以后正常的四步走上传到fork库,到目前为止你是可以再自己的fork中看到自己的代码的,然后就是最后一步pr:
弄好以后直接提交等上游库审查合并就可以了(我的已经提交了所有没有提交按钮);
现在问题来了,当我下次需要开发的时候我需要先pull线上的代码,但是我直接pull 分之后提示我
明明上游库已经有更新过的啊,
打开上游代码库,以及自己fork下来的库对比一下:
上游库的commit数量和本地不同,说明fork的库没有自动更新,需要我们手动更新。
同步上游代码库
下面我来说说怎么解决这个问题:
查看线上库的地址
$ git remote -v
origin git@github.com:username/fork.git (fetch)
origin git@github.com:username/fork.git (push)
配置上游库的路径
$ git remote add upstream ssh.git
查看是否添加成功
$ git remote -v
origin git@github.com:username/fork.git (fetch)
origin git@github.com:username/fork.git (push)
upstream ssh (fetch)
upstream ssh (push)
抓取原仓库的修改文件
$ git fetch upstream
remote: Enumerating objects: 33, done.
remote: Counting objects: 100% (33/33), done.
remote: Compressing objects: 100% (31/31), done.
remote: Total 33 (delta 11), reused 12 (delta 2), pack-reused 0
Unpacking objects: 100% (33/33), done.
From github.com:JinJieTan/Palantir
* [new branch] dev -> upstream/dev
* [new branch] develop/kk -> upstream/develop/kk
* [new branch] develop/nn0917 -> upstream/develop/nn0917
* [new branch] master -> upstream/master
* [new branch] peter -> upstream/peter
切换master分支
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
和并提交 就可以了
$ git merge upstream/master
$ git push origin master
以后每次更新都重抓取原仓库的修改文件执行一遍就可以了
其实后面三步可以合并成一条命令
git pull upstream master
第一个参数pustream 表示远程主repo
第二个参数master 表示自己fork库的master分支
跟着上面操作就可以首先上游代码库与fork库代码同步了,是不是很很神奇?
-
Git 如何同步上游分支代码?
2020-08-15 21:22:29上游仓库,也就是源分支代码更新了,我们 Fork 的下游分支,怎么同步上游仓库的更新呢? 本文是 Git 小知识系列文章的第一篇,以后将不定时的推送开发中常见的 Git 问题解决方案,Git 使用小技巧。 如果你喜欢的话... -
Github代码fork之后,如何与原仓库进行同步?
2021-06-03 07:13:02配置项目的上游仓库 首先需要大家将fork的仓库代码clone到本地,后面的所有操作都是基于本地代码库来进行操作的。比如,可以通过git clone先将fork的代码下载到本地: git clone git@github.com:secbr/nacos.git ... -
在GitHub上fork项目后,如何与原仓库同步?图解全过程
2021-03-16 18:43:38在你fork项目之后,原仓库又更新了,但GitHub不会自动帮你把原仓库的更新同步到你fork后的仓库,可能会导致在提交Pull request时,你的版本和原仓库的版本不一致。你可以把fork的项目删除掉,再重新fork。当然这不是... -
git fork之后的项目如何保持和上游同步
2019-10-17 13:57:13团队协作,为了规范,一般都是fork组织的仓库到自己帐号下,再提交pr,组织的仓库一直保持更新,下面介绍如何保持自己fork之后的仓库与上游仓库同步。 下面是我fork github 开源项目envoy 仓库... -
git fock的子项目从上游仓库(源项目)同步更新
2020-05-09 13:08:011.clone fock的项目到本地 git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git 2.查看项目远程状态 git remote -v # origin ... 3.添加一个将被同步给 fork 远程的上游仓库 -
github的fork和上游项目同步的方法
2021-01-17 15:02:45具体来说步骤如下:fork项目在github上面fork一个项目如此简单,以至于很多人的仓库里面fork出来的项目都泛滥成灾了!以前没有找到删除fork出来的项目的方法,原来藏在setting的dangerous zone里面。克隆项目到本地... -
git保持fork之后的项目和上游同步
2019-10-31 19:26:41保持fork之后的项目和上游同步 参考链接:https://github.com/staticblog/wiki/wiki/%E4%BF%9D%E6%8C%81fork%E4%B9%8B%E5%90%8E%E7%9A%84%E9%A1%B9%E7%9B%AE%E5%92%8C%E4%B8%8A%E6%B8%B8%E5%90%8C%E6%AD%A5 ... -
Sync-With-Upstream-action:一种使用上游仓库中的新提交自动更新fork的操作
2021-04-04 18:42:45Github行动:叉与上游同步 叉的动作! 自动将叉子上的分支与原始存储库中的最新提交同步。 保持最新状态! (它实际上可用于将任何回购分支与上游回购同步,但我在制作分叉时就在考虑分叉。) 预期的工作流程 此操作... -
Gerrit两个不同的仓库之间同步
2021-01-29 09:06:44Gerrit两个不同的仓库之间双向同步管理 1,在gerrit上找到记录 如果是open状态,请先操作submit http://xxxxxxxxxx:8085/q/status:open 2,进入到本地已repo init的目录,更新A仓库最新版本。 git ... -
git: 保持fork的项目与上游同步
2017-11-04 00:00:12git remote add upstream 上游地址git fetch upstreamgit checkout mastergit merge upstream/mastergit push origin master -
[Git]Github进行fork后如何与原仓库同步
2022-03-02 10:38:09说明你未设置 upstream (中文叫:上游代码库)一般情况下,设置好一次 upstream 后就无需重复设置。 执行命令 git remote add upstream http://****** 再次执行命令 git remote -v 检查是否成功.... -
git操作:在本地仓库添加运程仓库,并同步远程仓库
2019-10-20 09:59:08在本地仓库添加远程仓库,并同步远程仓库,步骤如下: 一、在本地创建一个目录,在目录在添加文件,并初始化仓库 $ mkdir testGit $ echo "aaa">testGitFile.txt $ sudo git init $ sudo git add * $ sudo... -
Git:fork仓库和远程仓库同步
2020-12-16 17:03:01Fork到自己的仓库 查看是否设置上游仓库 git remote -v 有upstream,则表示设置上游仓库 如果没有,设置 新增 remote (远程上游仓库), 即, 将本书仓库, 追加为 ...更新本地仓库和上游仓库同步 git fetch upst.. -
rsync同步公网yum源搭建本地yum仓库
2021-05-16 17:19:59镜像同步公网yum源上游yum源必须要支持rsync协议,否则不能使用rsync进行同步。centos源:rsync://rsync.mirrors.ustc.edu.cn/centos/epel源:rsync://rsync.mirrors.ustc.edu.cn/epel/同步命令:# rsync -vrt --... -
Github进行fork后如何与原仓库同步
2022-02-22 11:01:30在你 fork 之后, SamsungLabs(原仓库)的仓库又更新了,但 github 不会自动帮你把SamsungLabs的仓库同步给你 fork 后的仓库,导致你提交 pull、request 时的版本和SamsungLabs的版本不一致。Github进行fork后如何...