到目前为止,我们都是只是用了一个git远端,而git的魅力就在于它支持多个远端服务器的同时使用,在实际中也是经常用到的,本文就以github为例,说明怎么在egit中实现多个远端的同时使用。
本文提到的操作在“pull request”过程中是经常使用的,具体,请对照替换即可。
0、准备
我们继续使用之前使用的仓库做演示,并且已经在本地克隆好。
此外还需要在github注册一个账户,具体的注册什么的都很简单,就不说了,后文都以登录后的状态来说明。
1、新建仓库
在github新建仓库可以通过自己头像旁边的“+”,也可以直接访问:https://github.com/new
这里需要注意,github的私有仓库是需要付费的,所以不想付费,又要私有仓库,还是放在osc吧。另外,由于我们是要从另外的仓库导入进来,所以不要勾选下面的“Initialize this repository with a README”,否则导入不成功。
提交请求之后github会给出提示,告诉你要怎么导入仓库。
2、eclipse添加远端地址和初始推送
给出的导入方式都是基于命令行的,我们不使用给出的方法,使用eclipse进行管理,第一步是要将这个仓库地址添加进本地仓库的远端地址列表中。
在本地仓库记录展开的“remotes”上右键->"create remote"进入添加远端的向导
再想到中第一步要为这个远端命名,这里我命名为“github”
接下来就是指定地址了,先将github的地址(在这里是https://github.com/songxinqiang/BlogExample1.git)复制到剪贴板,在对话框中点击“change”弹出填写地址对话框,这个时候剪贴板的内容会自动填充,然后再填写用户名和密码点击保存就好了。
回到刚才的窗口,点击“save and push”完成保存和初始推送。
由于网络方面的原因,这次推送会等的时间久一点(而且有时候还会推送失败),完成后在github的仓库页面会看到仓库内容
这个时候实际上只是推送了仓库本身,还有标签没有推送,并且并没有配置拉取和推送的配置等。还需要进行后续的推送和配置。
3、推送标签
先推送已有的标签,在仓库下面的标签上右键->"push tags"开始推送标签
在对话框中需要选择要推送的标签和推送到的远端,选择好之后点击“next”进入下一步
选择好之后进入下一步,会给出本次推送的统计信息,确认之后就点击“finish”开始推送
之后就是推送结果了,然后在github上就看得到结果了
这个推送实际上在每次新建标签之后都需要进行。
4、配置远端跟踪
在仓库上右键->"remote"->"fetch",进入配置远端的向导
再想到中首先选择远端地址,这个下拉列表就是下面的“remotes”里面的记录
接下来就是指定需要获取的内容,我们将所有的分支和标签都添加进任务列表
获取之后就会在远端跟踪里面有记录
5、配置推送
配置到远端的推送,需要根据远端的分支新建对应的分支,和普通的新建分支方式一样,只是选择“分支基于哪里”的时候需要选择对应远端的对应分支,然后命名来区分,大致如图
然后就可以愉快的编辑修改,然后提交、推送啦。
这个时候会发现,选择“提交并推送”,实际上将“github-master”作为新分支进行的推送,但是我们希望建立“github-master”到“master”分支的“映射”。
在“github”这个远端上右键->"configure push"打开配置推送的对话框,
再打开的对话框中点击“ref mapping”的“add”按钮代开具体的“映射”添加对话框
在这个对话框中,指定本地分支与远端分支的对应关系,例如,我想建立“github-master”到"master"的对应关系,就会这样填写
继续配置,将本地的“github-develop”也配置好
“save and push”,就实现了想要的目的
6、数据的同步
完成了github的数据推送,这个时候osc的仓库里面数据还没有修改的,接下来需要将这个修改合并过去。
首先将本地分支切换到osc的仓库对应的master分支,
然后使用之前合并分支的方式,进行分支合并,只是“合并源”选择“github-master”分支就OK
合并完成之后,会有需要推送的提示,这个时候只是本地合并好了,接下来的就和之前的使用没有区别了。
推送之后在osc的仓库里面也看到相关的修改
7、小结
本文介绍是使用的两个服务商的仓库服务,但是实际上可以同一个服务商的不通仓库之间进行这项操作,最直接的就是进行“pull request”的时候,需要同步“源仓库”的修改到自己fork的仓库来,这样在别人合并请求的时候才会尽可能减少冲突。
本文的操作,如有不对或者可以优化的地方,还烦请指导。
enjoy!!