在克隆期间更改远程 URL

Change remote URL during cloning

有没有办法在克隆期间 change/replace 回购 URL?

我有主 Bitbucket 和镜像 Bitbucket 服务器,我的目标是尽可能多地使用本地镜像而不让用户记住镜像 URL(这与主机名和主镜像略有不同小路)。我希望它对开发人员完全透明。

我可以控制全局配置文件。

很遗憾,我无法使用 DNS 来完成这项工作。

您无法在 克隆过程中更改URL 。你给 Git 一个 URL ,它从 URL;该连接已打开;没有什么可以改变的。一旦克隆完成——好吧,从技术上讲,就在克隆开始之前,但从外面看起来是一样的——Git 将 URL 写入克隆的 =10=] 并停止,现在, 克隆之后,您可以随时更改存储的 URL 任意内容。

要做到这一点,在任何你喜欢的时候,运行 git remote set-url <em>name-of-remote</em> <em>new-url</em> 在克隆中。 Git 会将新的 URL 存储在该远程名称下(可能您只想在此处使用 origin)。下次您使用该远程名称时,Git 会将其转换为存储的 URL。 运行 这个命令在技术上是可行的 git clone 仍然是 运行ning,但这不是一个好主意,因为 git clone 正在进行向 .git/config 写入更多内容,而对 .git/config 的两次写入可能会相互冲突(在这种情况下,其中一个会失败,并且无法预测是哪一个)。

我认为您希望为您的存储库设置一个远程引用,其中一个远程 URL 如果可用则使用,但另一个远程 URL 如果第一个可用则使用不可用(也许您担心第一个远程失败的网络连接)。

我不知道有什么方法可以做到这一点,我也不希望有办法做到这一点。通过尝试将两个遥控器视为一个遥控器,您最终可能会遇到两个遥控器不一致的情况,并且 cloning/pulling 您会得到混合结果。

我建议在您的配置文件中设置两个单独的远程引用 - 每个远程引用一个 URL。第一个叫 origin,第二个叫 origin-backup。然后试验您(或您的团队开发人员)选择从哪个远程拉取的工作流。

很遗憾,您和您的团队将不得不手动处理两个遥控器之间的任何差异。也许有办法做你想做的事,但我认为这不可能。