我们有:
- 带有项目的远程存储库。
- 几个远程存储库,我想与前一个同步。
当在第一个项目(1)中推送某些内容时,我需要将这些更改拉到其他远程存储库(2)中。
我可以从第一个repo中拉出并推送到目标库。
最简单的方法是什么?
谢谢。
您可以从您无法控制的上游存储库克隆一个新的裸镜像存储库,例如:
git clone --bare --mirror git://github.com/whoever/whatever.git
(实际上,--mirror
意味着--bare
,因此--bare
不是严格必要的。)--mirror
选项表示,git应该用相同的名称镜像来自远程存储库的所有分支,而不是仅仅从远程存储库获取本地分支并使它们成为远程跟踪分支。
然后,您可以设置一个频繁的cron作业,在该存储库中运行以下命令:
git remote update
git push --mirror --force repo1
git push --mirror --force repo2
假设您已经将repo1
和repo2
添加为远程,并且它们指向您只想用作镜像的裸存储库。(后面的要求是因为您使用的是--force
,所以如果其他人将他们的工作推送到repo1
或repo2
,它将被自动镜像推送覆盖。)
您可以在第一个远程存储库中设置一个post-receive
钩子,然后从您的第一个远程存储库推送到其他每个远程存储库。