git 如何从bundle中克隆存储库沿着更改?

jdg4fx2g  于 2023-11-15  发布在  Git
关注(0)|答案(1)|浏览(107)

我有一个git仓库和一个git bundle文件。我可以 checkout 仓库,并在一台机器上应用bundle。我想使用这台特定的机器作为这个仓库的镜像,沿着bundle中的更改。但是当我尝试克隆它时,bundle的更改似乎没有出现。
这是我在机器A上做的:

  1. git clone [email protected]/repo.git
  2. wget https://example.com/extra-upstream.bundle
  3. cd repo
  4. git fetch ../extra-upstream.bundle '+refs/heads/*:refs/remotes/extra/*'

字符串
到目前为止,这似乎工作得很好-我有我预期的变化。
在机器B上,我执行以下操作:

  1. git clone git@machine-A:/repo


然而,只有上游代码被克隆,没有bundle中的分支/远程。我错过了什么?

0tdrvxhp

0tdrvxhp1#

既然你想提到你想创建一个“镜像”,用--mirror克隆,这也会让你得到远程仓库的远程跟踪分支:

--mirror

设置源仓库的镜像。这意味着--bare。与--bare相比,--mirror不仅将源仓库的本地分支Map到目标仓库的本地分支,还Map所有引用(包括远程跟踪分支,注解等)并设置refspec配置,以便所有这些引用都被目标仓库中的git远程更新覆盖。
或者,为您的远程指定其他参考规范:

  1. git config --add remote.origin.fetch '+refs/remotes/extra/*:refs/remotes/extra/*'

字符串
或者直接获取它们而不进行任何配置:

  1. git fetch origin '+refs/remotes/extra/*:refs/remotes/extra/*'


这两种形式都将在获取时在本地镜像远程存储库的“额外”远程名称空间。

展开查看全部

相关问题