从GIt Bundle获取所有分支

时间:2018-02-02 21:05:22

标签: git

我已经使用--all捆绑了一个Git存储库,但是我无法弄清楚如何使用所有分支回复一个回购。

如何在给定.bundle文件的情况下取回所有分支?

1 个答案:

答案 0 :(得分:1)

答案的前缀注释:如果您的目的是创建一个实际上已经“从备份中恢复”的新存储库,您可能需要一组不同的步骤,您根本不需要创建一个遥控器。

  1. 将文件添加(或使用)为(或)遥控器,如the git bundle documentation中所述。在文档中的示例中,这通过使用捆绑文件作为git clone中的源URL自动发生,但您可以使用git remote add - 请参阅the git remote documentation了解详细信息 - 添加捆绑文件作为现有存储库的新(另外的,不是 - origin - 命名的)远程。

  2. 然后使用git fetch来读取文件。这将与任何git fetch的工作方式相同,将他们的分支名称 - 存储在此捆绑包文件中,用作远程 - 您的远程跟踪名称默认情况下。这是由于git bundle手册中记录的那一行:

    fetch = refs/heads/*:refs/remotes/origin/*
    

    (或类似),告诉git fetch获取他们的refs/heads/*名称并生成refs/remotes/origin/*名称。

    如果您更改了这组指令,例如,请阅读:

    fetch = refs/*:refs/*
    

    您将指示您的Git更新(在此情况下不强制)所有您的引用所有的引用,包括标记名称{{1如果存在,则引用和refs/notes/。这类似于使用refs/stash时获得的配置,这会将git clone --mirror行设置为:

    fetch

    请注意此处的前导加号,表示“强制”:使用他们的覆盖我的分支名称(例如fetch = +refs/*:refs/* )。 这仅在您从未在存储库中执行任何工作时才有用,因为它会通过覆盖它们来有效地破坏您的分支哈希ID。 (你可以通过reflog保留旧的哈希值,但这很棘手,你需要知道如何处理你的索引和工作树变得不同步。)注意refs/heads/master克隆是自动--mirror,因此它没有工作树,因此您不会以这种方式遇到麻烦。如果您使用--bare,请小心!