使用set-url推送多个git网址及其陷阱

时间:2017-04-15 13:17:51

标签: git gitlab

我想在我的本地服务器上设置gitlab服务器,并使用gitlab cloud作为异地备份。每当开发人员推动他们的工作,我希望它去两个gitlab服务器。我将使用以下git命令

执行此操作
git remote set-url --add --push origin git://my_local_repo_url
git remote set-url --add --push origin git://my_gitlab_com_repo_url

我担心这两台服务器可能很容易失去同步。

  1. 如果其中一台服务器在推送过程中出现故障,那么一个成功,一个失败,会发生什么?我该怎么办呢?
  2. 如果开发人员忘记添加其中一个远程URL,以便只推送其中一个服务器,然后添加第二个远程URL,该怎么办?下一次推动会发生什么,我将如何处理?
  3. 我可能会遇到哪些其他问题?

1 个答案:

答案 0 :(得分:1)

  

如果其中一个服务器在推送过程中出现故障,那么一个成功,一个失败,会发生什么?我该如何处理?

正如" pull/push from multiple remote locations"中提到的,失败的推送(因为任何原因之一的远程存储库不可用)可以在下一次推送时修复:提交在上一次推动时没有按下(除了新的推)。

即使开发人员稍后添加第二个遥控器,只要第二个遥控器反映第一个遥控器的内容,即可:只推送新的提交(两者都是)

但问题是:

  • 发散历史记录(当其中一个遥控器提交您尚未提交时):您需要在origin/master之上进行重新定位(在获取时,origin始终引用第一个 url):然后你可以推
  • divergent remote(当两个远程具有不同的提交集时,因为两个不同的历史被推送到每个提交):您需要push --force到其中一个远程才能重写/重置其历史记录。 / LI>