Git - 多个存储库?

时间:2013-09-02 18:28:35

标签: git version-control git-flow

Git可以轻松地执行以下操作吗?

  • 在'GitHub
  • 处设置'主'回购
  • 在Bitbucket上保留另一个存储库,在生产服务器(Web主机)上保留另一个存储库

当本地开发发生时,我希望推送将更改推送到GitHub,并同时将这些更改推送到其他存储库。

我尝试使用--mirror进行此操作,但是在同一个项目上有一个7人团队,在镜像更新时似乎很容易删除功能分支。

思考?有没有办法在不手动编辑.gitconfig文件的情况下手动定义指向多个repo URL的原点?这可以用钩子完成吗?

2 个答案:

答案 0 :(得分:4)

您只需定义一个别名即可:

git config alias.pusheverywhere \
"!git push github && git push bitbucket && git push production"

命令中的&&是逻辑AND,因此只有左侧的命令成功且没有错误才会执行右侧的命令。

答案 1 :(得分:3)

镜像获得的回购可能会非常棘手,特别是如果您没有使用git clone --mirror创建下游回购。 在您的情况下,您不会以这种方式创建本地(“下游”)仓库,因为您有三个要维护的上游镜像仓库。

博客文章“How to properly mirror a git repository”提到,对于镜像推送的本地仓库,您需要:

git fetch --prune upstream_repo

(务必清除跟踪remote tracking branches已删除分支的upstream repo

git push --prune upstream_repo +refs/remotes/origin/*:refs/heads/* +refs/tags/*:refs/tags/*

(顺便说一下,这不包括git笔记)

推送三个回购是一种方式,但我更愿意:

  • 推送到prod repo
  • 有一个post post hook,它推送到GitHub和BitBucket repos

如果在prod仓库中检测到问题(例如缺少对提交的评论或其他未遵守的政策),您将有机会:

  • 否认对prod的推动
  • 不会污染GitHub和BitBucket回购