git - 如何保持两个 git repos 同步?

标签 git github bitbucket

我在托管设施的私有(private)服务器上运行我自己的私有(private) git 存储库。我将它用于任何我无法开源的私有(private)项目。我将 github 用于我所有的开源工作。

我在桌面 ubuntu 机器和我的 MacBookPro 上进行开发。当我对我的开发系统进行更改时,我将更改推送到 colo 中的源并 pull 到另一个系统。我非常擅长让所有三个系统在大多数情况下保持最新状态,主要用于备份和灾难恢复目的。

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

所以我有几个问题:

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

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

  3. 迁移到 bitbucket 后,我​​仍然希望在我的服务器上有另一个备份。我怎样才能自动将对 bitbucket 的提交推送到我的 git 服务器?这基本上是问题 1 的反面。

最佳答案

对于 #1,最简单的解决方案是在您的远程仓库上使用一个钩子(Hook),该钩子(Hook)会自动推送到 BitBucket。

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

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

关于git - 如何保持两个 git repos 同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7658997/

相关文章:

git - 如何通过 http 设置 git?

git - 在 Jenkins Pipeline/Jenkinsfile 中获取 git 分支名称

git - 问题推送到使用 "Initialize repo with a README"选项创建的 GitHub 存储库

git - 如何将特定目录提交到与 git 上的工作分支不同的目录?

git - 推送到 Bitbucket : ssh: Could not resolve hostname bitbucket. org:用户名: 没有这样的文件或目录

git - bitbucket - git 推送、克隆、 pull 错误 500

git - 从 git 存储库中 pull 所有未获取的更改

php - 同时开发 Composer 库和主项目的最佳实践是什么?

html - GitHub 页面发布链接无效

linux - 将 SSH key 添加到 authorized_keys : permission denied(publickey)