Git - Pushing code to two remotes
我有两个远程Git存储库。
我把我的分支
1 2 | git push -u origin devel git push -u github devel |
但当我这样做的时候。
我是否可以设置我的两个远程设备,以便用一个命令将更改推送到两个存储库?
在Git的最新版本中,可以为给定的远程设备添加多个
1 2 | git remote set-url --add --push origin git://original/repo.git git remote set-url --add --push origin git://another/repo.git |
因此,当您推到
update 1:git 1.8.0.1 and 1.8.1(以及可能的其他版本)似乎有一个bug,导致
更新2:Git维护人员JunioC.Hamano解释了它是如何设计的。执行
1 2 3 4 5 6 7 | $ git clone git://original/repo.git $ git remote -v origin git://original/repo.git (fetch) origin git://original/repo.git (push) $ git config -l | grep '^remote\.' remote.origin.url=git://original/repo.git remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* |
现在,如果您想使用一个命令推送到两个或多个存储库,您可以创建一个新的名为
因此,让我们添加一个新的名为
1 2 3 4 5 6 7 8 9 | $ git remote add all git://original/repo.git $ git remote -v all git://original/repo.git (fetch) <-- ADDED all git://original/repo.git (push) <-- ADDED origin git://original/repo.git (fetch) origin git://original/repo.git (push) $ git config -l | grep '^remote\.all' remote.all.url=git://original/repo.git <-- ADDED remote.all.fetch=+refs/heads/*:refs/remotes/all/* <-- ADDED |
然后,我们将一个
1 2 3 4 5 6 7 8 9 10 | $ git remote set-url --add --push all git://another/repo.git $ git remote -v all git://original/repo.git (fetch) all git://another/repo.git (push) <-- CHANGED origin git://original/repo.git (fetch) origin git://original/repo.git (push) $ git config -l | grep '^remote\.all' remote.all.url=git://original/repo.git remote.all.fetch=+refs/heads/*:refs/remotes/all/* remote.all.pushurl=git://another/repo.git <-- ADDED |
这里,
现在,让我们添加另一个指向原始存储库的
1 2 3 4 5 6 7 8 9 10 11 12 | $ git remote set-url --add --push all git://original/repo.git $ git remote -v all git://original/repo.git (fetch) all git://another/repo.git (push) all git://original/repo.git (push) <-- ADDED origin git://original/repo.git (fetch) origin git://original/repo.git (push) $ git config -l | grep '^remote\.all' remote.all.url=git://original/repo.git remote.all.fetch=+refs/heads/*:refs/remotes/all/* remote.all.pushurl=git://another/repo.git remote.all.pushurl=git://original/repo.git <-- ADDED |
你看,我们添加的两个
要使用一个命令同时发送到两个远程,可以为其创建别名:
1 | git config alias.pushall '!git push origin devel && git push github devel' |
这样,当您使用命令