2

在 Git 中是否可以轻松地执行以下操作?

  • 有一个位于 GitHub 的“主要”存储库
  • 在 Bitbucket 中保留另一个存储库,在生产服务器(Web 主机)上保留另一个存储库

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

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

想法?有没有办法做到这一点,而无需手动编辑 .gitconfig 文件来手动定义指向多个 repo URL 的源?这可以用钩子完成吗?

4

2 回答 2

4

您可以简单地定义一个别名来执行此操作:

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

&&命令中的“与”是逻辑与,所以它右侧的命令只有在左侧的命令成功且没有错误的情况下才会执行。

于 2013-09-02T19:36:13.137 回答
3

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

博客文章“如何正确镜像 git 存储库”提到,要使本地存储库镜像推送,您需要:

git fetch --prune upstream_repo

(确保清除跟踪上游仓库已删除分支的远程跟踪分支

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

(顺便说一下,这不包括 git 注释)

推送到三个 repos 是一种方法,但我更喜欢:

  • 推动生产回购
  • 有一个推送到 GitHub 和 BitBucket 存储库的帖子接收钩子

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

  • 拒绝推动产品
  • 不污染 GitHub 和 BitBucket 存储库
于 2013-09-02T19:43:13.803 回答