使用git时如何避免丢失远程信息?
How to avoid losing remote information when using git?
我的 objective 是为了简化更新我的 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
以便即使在新的克隆远程存储库链接存在之后?
我的objective是会做
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
Is it possible to configure repo-B so that even after a fresh clone remote repositories links [to repo-A] are present?
没有
记住,git clone
表示:
- 新建一个空目录;
- 运行
git init
在新的空目录中;
- 运行
git remote add
在新克隆中;
- 运行
git config
在新克隆 if/as 中由您提供给 git clone
; 的选项引导
- 运行
git fetch
在新克隆中;和
- 运行
git checkout
在新克隆中。
只有第 4 步可以做你想做的事——第 3 步中的 git remote add
是为了让第 5 步从 repo-B 获取——而第 4 步只服从你在命令行上提供的参数。
你有两个选择:
- 不要使用
git clone
,至少不要直接使用。编写您自己的程序 运行s git clone
,检查新克隆,然后根据需要 运行s git remote add
。或者,
- 通过添加适当
-c
选项的别名或脚本使用 git clone
,以便第 4 步设置远程。 git remote add
由 运行 多个 git config
操作组成:具体来说,您必须设置 remote.<em>name</em>.url
和 remote.<em>name</em>.fetch
。因此,您可以使用 git clone
命令行执行这些操作。
请注意,这两者非常相似:真正的区别在于您是从从回购 B 检索到的内容中获得回购 A 的 URL,还是 hard-code。如果您选择从回购 B 检索到的内容中获取 URL,请记住 git clone
复制所有(可访问的) 提交 ,但没有 分支: 第 6 步是在新克隆中创建分支的步骤。您需要在步骤 5 中获取的某些数据中对 repo A 的 URL 进行编码:可能是一些提交,可能是通过特殊编码的 remote-tracking 名称(即 repo-B 中的分支名称变为remote-tracking 名称在你的克隆中),或者在一些数据中通过一些标签名称找到。
我的 objective 是为了简化更新我的 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
以便即使在新的克隆远程存储库链接存在之后?
我的objective是会做
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
Is it possible to configure repo-B so that even after a fresh clone remote repositories links [to repo-A] are present?
没有
记住,git clone
表示:
- 新建一个空目录;
- 运行
git init
在新的空目录中; - 运行
git remote add
在新克隆中; - 运行
git config
在新克隆 if/as 中由您提供给git clone
; 的选项引导
- 运行
git fetch
在新克隆中;和 - 运行
git checkout
在新克隆中。
只有第 4 步可以做你想做的事——第 3 步中的 git remote add
是为了让第 5 步从 repo-B 获取——而第 4 步只服从你在命令行上提供的参数。
你有两个选择:
- 不要使用
git clone
,至少不要直接使用。编写您自己的程序 运行sgit clone
,检查新克隆,然后根据需要 运行sgit remote add
。或者, - 通过添加适当
-c
选项的别名或脚本使用git clone
,以便第 4 步设置远程。git remote add
由 运行 多个git config
操作组成:具体来说,您必须设置remote.<em>name</em>.url
和remote.<em>name</em>.fetch
。因此,您可以使用git clone
命令行执行这些操作。
请注意,这两者非常相似:真正的区别在于您是从从回购 B 检索到的内容中获得回购 A 的 URL,还是 hard-code。如果您选择从回购 B 检索到的内容中获取 URL,请记住 git clone
复制所有(可访问的) 提交 ,但没有 分支: 第 6 步是在新克隆中创建分支的步骤。您需要在步骤 5 中获取的某些数据中对 repo A 的 URL 进行编码:可能是一些提交,可能是通过特殊编码的 remote-tracking 名称(即 repo-B 中的分支名称变为remote-tracking 名称在你的克隆中),或者在一些数据中通过一些标签名称找到。