可以git推送到多个ssh遥控器?

时间:2014-10-21 00:17:56

标签: git

我需要通过ssh推送到多个遥控器。这是我的设置:

$ git remote -v
stage   ssh://me@host1.xxxxxx.com:/home/me/gitserve (fetch)
stage   ssh://me@host2.xxxxxx.com:/home/me/gitserve (push)
stage   ssh://me@host1.xxxxxx.com:/home/me/gitserve (push)

$ git config -l
user.name=kevin
user.email=xxxx
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
remote.stage.url=ssh://me@host1.xxxxxx.com:/home/me/gitserve
remote.stage.fetch=+refs/heads/*:refs/remotes/stage/*
remote.stage.pushurl=ssh://me@host2.xxxxxx.com:/home/me/gitserve
remote.stage.pushurl=ssh://me@host1.xxxxxx.com:/home/me/gitserve

但是当我推动时,git只推送到我的第二个主机而不是第一个主机:

$ git push stage master
Counting objects: 3, done.
Writing objects: 100% (3/3), 251 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://me@host2.xxxxxx.com:/home/me/gitserve
   8963c70..9619fdb  master -> master
Everything up-to-date

git是否只允许通过SSH进行一次远程推送?我在SO上看过一些示例,表明你可以对“git://”架构进行多个推送遥控器,但不确定你是否可以为ssh架构提供多个推送遥控器。

1 个答案:

答案 0 :(得分:0)

重新定义remote.stage.pushurl将覆盖原始值。

如果要推送到不同的遥控器,请使用不同的名称定义它们:

 remote.stage2.pushurl=ssh://me@host2.xxxxxx.com:/home/me/gitserve
 remote.stage1.pushurl=ssh://me@host1.xxxxxx.com:/home/me/gitserve

然后推:

git push stage1 master
git push stage2 master