git 多个远端仓库

2018-12-26 develop git

Git 作为一个分布式的仓库,可以配置多个远端,这里介绍如何将一个本地仓库同步到不同的远端仓库中,最常见的是开源代码时对应了不同仓库地址。

最常见的是新增一个远端仓库地址,并将本地中的一个分支推送到新增的远端服务器,两个分支可能对应了不同的开源策略。

----- 查看当前所有的远端仓库,默认使用 origin 远端
$ git remote -v
origin git@git.coding.net:user/project.git (fetch)
origin git@git.coding.net:user/project.git (push)

----- 添加一个名为 github 的远端仓库
$ git remote add github git@github.com:user/repos.git
github git@github.com:user/repos.git (fetch)
github git@github.com:user/repos.git (push)

----- 新建一个开源分支
$ git branch opensource
$ git checkout opensource
----- 或者一条命令
$ git checkout -b opensource

----- 将本地的 opensource 分支推送到 github 端的 main 分支上,同时绑定
$ git push -u github opensource:main

此时,在仓库本地的配置文件为。

[remote "origin"]
        url = git@git.coding.net:user/project.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[remote "github"]
        url = git@github.com:user/repos.git
        fetch = +refs/heads/*:refs/remotes/github/*
[branch "opensource"]
        remote = github
        merge = refs/heads/main

而且允许一个 remote 绑定多个远端地址,这样就可以将提交同时同步给两个远端仓库。

$git remote set-url --add --push origin git@git.coding.net:user/project.git

也可以从 origin 的某个远端分支同步过来,然后再同步到 github 的一个远端分支。

----- 将 origin 中的 develop 分支拉取到本地,作为本地的 master 分支
$ git pull origin develop:master

----- 再将本地的 master 推到 github 的远端 main 分支
$ git push github master:main

如果要修改 URL 可以执行如下命令。

$ git remote set-url origin git@gogs.cargo.com:cargo/Bastion.git