您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试管理 > 配置管理 > 正文

配置git同时push到两个远端库的简单方法

发表于:2017-01-09 作者:网络转载 来源:

  最近在写一个开源的论坛系统,在发布代码时选择了github和coding这两个平台,我手懒,不想敲两次git push了,所以说突然有了一个很奇怪的需求:用一条git push同时push到两个远端代码库。当然说写个sh脚本当然肯定能解决,但是我对那个不太熟悉,所以说搜索了一下相关资料,找到一篇问答讨论了这个问题
  以下是解决方法,转载自终端下如何配置 git 使其可以同时 push 到两个远程仓库?
  我用过两种方法,最早的时候是设定多个 remote,然后写一个 alias,比如:
  $ git config alias.pushall "!git push origin && git push dev"
  后来在某一个版本(忘了具体的版本号)升级之后,Git 多了一项设置,使得你可以为一个 remote 设置多个 pushurl。比如说你问题里的例子,我可以不要 remote "dev",只留下 remote "origin",然后加一句:
  git remote set-url --add --push origin git@gitlab.com:root/XXX.git
  在这之后,你的 remote "origin" 就变成类似如下的结构:
  [remote "origin"]
  url = git@github.com:SegmentFault/XXX.git
  fetch = +refs/heads/*:refs/remotes/origin/*
  pushurl = git@github.com:SegmentFault/XXX.git
  pushurl = git@gitlab.com:root/XXX.git
  如此一来,我可以直接 git push origin 就可以推向两个 repos 了。
  这两种方法其实各有各的适用场景,自己取舍吧。
  请注意,我亲测后发现,这篇原文中提到的加另外一个代码库的命令有错误,set-url前面不应该有"--"
  原文中是
  git remote --set-url --add --push origin git@gitlab.com:root/XXX.git
  这个是错的,我已经在上面引用中改正了
  我该如何使用这个功能?
  看完之后我试了一下,这个应该这么用
  1、先把你要第一个push的代码用git remote add这种通常的办法添加好,这里将这个远端库命名为bucket
  git remote add bucket git@git.coding.net:xxxxx
  2、第二步,用set-url这个参数将第二个代码库添加上去
  git remote set-url --add --push bucket git@gitlab.com:root/XXX.git
  然后用git remote -v 看一下已添加的代码库,会看到类似下文的结果
  bucket  git@git.coding.net:xxxxx (fetch)
  bucket  git@git.coding.net:xxxxx (push)
  bucket  git@gitlab.com:root/XXX.git (push)
  这样就可以了,然后试一下push代码到bucket,就可以观察到git按照顺序自动把东西push到了远端

 相关文章