【问题标题】:How to avoid losing remote information when using git?使用git时如何避免丢失远程信息?
【发布时间】:2021-02-11 00:43:41
【问题描述】:

我的目标是简化更新我的 git 镜像克隆的过程。

我有一个由供应商提供的 git 存储库 repo-A 我有一个 git 存储库 repo-B 在我的本地 git 中

我能够克隆 repo-A 添加 repo-B 作为远程并推送到 repo-B。使用此命令

git clone --mirror repo-A
git remote add  my-local-server repo-B
git push --mirror my-local-server

结果是repo-B 包含与repo-A 相同的分支、提交等。此时我可以从repo-A获取新代码并将其推送到repo-B

问题是如果我在另一台计算机上克隆repo-B。遥控器配置丢失。

这意味着,如果我执行 git remote -v,则只有指向 repo-B 的链接存在。

是否可以配置 repo-B 以便即使在新克隆远程存储库链接之后也存在?

我的目标是能够做到

git clone repo-B
git fetch --all origin /* or the name of location repo-A is located */
git push --all my-local-server

我知道类似的行为可以通过

git clone --mirror repo-A
git push --mirror repo-B

【问题讨论】:

    标签: git git-clone git-mirror


    【解决方案1】:

    是否可以配置 repo-B,以便即使在新克隆远程存储库链接 [to repo-A] 之后也存在?

    没有。

    记住,git clone 的意思是:

    1. 创建一个新的空目录;
    2. 在新的空目录中运行git init
    3. 在新克隆中运行git remote add
    4. 如果/按照您提供给git clone 的选项的指示,在新克隆中运行git config
    5. 在新克隆中运行git fetch;和
    6. 在新克隆中运行 git checkout

    只有第 4 步可以做你想做的事——第 3 步中的 git remote add 是为了让第 5 步从 repo-B 中获取——第 4 步只服从你在命令行上提供的参数。

    你有两个选择:

    1. 不要使用git clone,至少不要直接使用。编写您自己的程序,运行git clone,检查新克隆,然后根据需要运行git remote add。或者,
    2. 通过添加适当-c 选项的别名或脚本使用git clone,以便步骤4 设置远程。 git remote add 由运行多个git config 操作组成:具体而言,您必须设置remote.<em>name</em>.urlremote.<em>name</em>.fetch。因此,您可以使用git clone 命令行来执行这些操作。

    请注意,这两者非常相似:真正的区别在于您是从从 repo B 检索到的内容中获取 repo A 的 URL,还是对其进行硬编码。如果您选择从从 repo B 检索到的内容获取 URL,请记住 git clone 复制所有(可达)提交,但没有分支:第 6 步是在新克隆中创建一个分支。您需要在第 5 步中获取的一些数据中对 repo A 的 URL 进行编码:可能是一些提交,可能是通过特殊编码的远程跟踪名称找到的(即,repo-B 中的分支名称成为克隆中的远程跟踪名称),或者在一些数据中通过一些标签名找到。

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      • 2019-12-22
      • 2014-10-20
      相关资源
      最近更新 更多