首页 > 解决方案 > 我可以将本地 Git 连接到不同的服务器帐户吗?

问题描述

我在家工作,想独立连接不同的 Git。无法弄清楚是否可能。例如,对于工作,我需要使用我公司的电子邮件连接公司的存储库。公司在 Azure DevOps(以前的云 VSTS 或 TFS)中使用 Git 对于我的个人用途,我需要连接我在 GitHub 中的帐户或我的个人帐户 Azure DevOps。我这样做主要是为了学习或 PoC 目的。

无需合并两者,我只是 Git 的初学者,所以至少要求我指出正确的方向。我没有找到完全符合我需要的示例。

添加澄清:我想了解如何使用 Git 命令行或 Eclipse Git 插件在我的桌面上配置以下内容:两个独立的项目都使用不同的独立远程仓库和不同的帐户。

标签: git

解决方案


所问问题的答案是肯定的:一个 Git 可以连接到任何其他 Git。好吧,只要有一些互联网连接,或者——有git bundle——某种运动鞋网连接。

关于这是否有用的另一个问题的答案更为复杂。(第三个问题的答案,即贵公司是否会批准,是政治性的而非技术性的。)

最后,Git 是关于由哈希 ID 标识的提交。为了在不同的 Git 中完成有用的工作,他们需要共享实际的提交,从而共享哈希 ID。这就是我们使用的原因:这通过它们的哈希 IDgit clone复制提交

当您克隆某个其他 Git 存储库时,您会得到它的所有提交,而没有它的任何分支。1 克隆进程接收它们的分支名称,但修改它们,使它们成为您的远程跟踪名称。然后,您的 Git 在您的存储库副本中创建一个分支名称。这个分支名称与它们的分支名称之一指向相同的提交,现在是您的远程跟踪名称。

从这一点开始,您将使用自己的分支名称来处理提交哈希 ID,该名称是根据存储在其分支名称中的哈希 ID 创建的,您已将其复制到远程跟踪名称中。您现在拥有自己的分支名称,但所有提交都是共享的——除了您创建的任何新提交以及它们在您运行后创建的任何新提交git clone

为了让你的 Git 和他们的 Git 协调,你和他们需要共享大部分哈希 ID 和提交。所以你的克隆或者他们的克隆的克隆是好的:这些都共享大量的哈希 ID,因此也有大量的提交。

就您正在克隆克隆的克隆克隆克隆的克隆而言,这一切都很好。当您连接两个不相关的存储库时,一切都会出错,其中哈希 ID 在任何提交中都不匹配。


1从技术上讲,您可以从一组名称中获得所有可访问的提交,其中名称集由您决定。但是,通常情况下,您使用他们的所有(公共可见性、分支和标签)名称来创建您的所有名称,以便您获得他们的所有提交。您的 Git 会复制它们的标签名称并重命名它们的分支名称,因此您可以共享标签名称,但拥有自己唯一的分支名称。

所有这些都可以控制,但那是 Advanced Git,而不是 Git 101。


推荐阅读