如何保持两个git repos同步?

时间:2011-10-05 09:10:40

标签: git github bitbucket

我在colo工具中的私有服务器上运行我自己的私有git存储库。我将它用于任何我无法开源的私人项目。我使用github进行所有开源工作。

我在桌面ubuntu机器和MacBookPro上进行开发。当我在开发系统上进行更改时,我将更改推送到colo中的原点并拉到另一个系统。我非常擅长保持所有三个系统最新,主要用于备份和灾难恢复。

现在BitBucket正在免费提供私人git托管,我正在考虑在那里添加我的项目的克隆。此外,我可以使用BitBucket提供的额外功能,我的准系统私人git服务器不提供。但是,我想继续在我的colo服务器上保留私人存储库的副本以及备份冗余。

所以我有几个问题:

  1. 在不更改标准开发流程(编辑,添加,提交,推送)的情况下,如何自动将推送到我的服务器的提交同步到bitbucket项目?每次我推送到我的git服务器,我都希望这些提交能够自动推送到我的bitbucket项目。我不想改变我的工作流程,并希望对我的开发客户进行必要的修改。

  2. 如果我想使用bitbucket作为我的主要git仓库,如何将项目从私有git服务器迁移到bitbucket?

  3. 一旦我迁移到bitbucket,我仍然喜欢我的服务器上的另一个备份。如何自动提交bitbucket被推送到我的git服务器?这基本上与问题1相反。

2 个答案:

答案 0 :(得分:7)

对于#1,最简单的解决方案是使用远程仓库上的挂钩自动推送到BitBucket。

对于#2:您只需将bitbucket添加为远程并推送到它而不是原点。如果您有任何跟踪分支(请检查.git/config),请将remote = origin更改为您用于bitbucket的任何名称。另一种解决方案是删除/重命名现有的origin远程并添加bitbucket作为原点。

对于#3:执行git fetch的cronjob可能是最简单的方法。

答案 1 :(得分:4)

也许你可以在你的私人服务器上添加一个git hook来自动推送到bitbucket。

在pro git书中,有一章关于git hooks:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks