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