我正在为本地git仓库编写备份脚本。
我研究了一些可能性,并选择了bundle来完成任务。
我所采取的步骤如下:
1. 创建一个新的仓库,进行初始提交 当我用“git branch -a”检查该仓库时,我会得到以下结果: * master 2. 运行“git bundle create ./test.bundle --all”
现在,当我使用“git bundle list-heads”检查bundle时, 我会得到2个引用:1个是HEAD,另一个是refs/heads/master。
当我使用“git clone”将这个bundle拉入新的仓库时,分支看起来是这样的:
为什么会发生这种情况?有没有一种方法可以只导入第一个仓库中的分支而不包括远程分支?
编辑:
我的问题可能有点不清楚。这是我想要实现的内容:
1. 有一个包含2个分支(master和test)的仓库。 2. 捆绑所有分支(使用建议的
切换到测试模式后,我收到了一条消息,说已经创建了一个新的分支。是否有方法可以克隆所有分支,使其看起来像原始仓库?
1. 创建一个新的仓库,进行初始提交 当我用“git branch -a”检查该仓库时,我会得到以下结果: * master 2. 运行“git bundle create ./test.bundle --all”
现在,当我使用“git bundle list-heads”检查bundle时, 我会得到2个引用:1个是HEAD,另一个是refs/heads/master。
当我使用“git clone”将这个bundle拉入新的仓库时,分支看起来是这样的:
*master
remotes/origin/HEAD -> remotes/origin/master
remotes/origin/master
为什么会发生这种情况?有没有一种方法可以只导入第一个仓库中的分支而不包括远程分支?
编辑:
我的问题可能有点不清楚。这是我想要实现的内容:
1. 有一个包含2个分支(master和test)的仓库。 2. 捆绑所有分支(使用建议的
git bundle --branches
完成)。
3. rm
整个仓库。
4. 使用git clone恢复仓库。不幸的是,我必须提供一个分支参数,因为如果没有它,会出现以下错误:warning: remote HEAD refers to nonexistent ref, unable to checkout.
克隆后我得到了以下分支,这是唯一的问题:*master
remotes/origin/master
remotes/origin/test
切换到测试模式后,我收到了一条消息,说已经创建了一个新的分支。是否有方法可以克隆所有分支,使其看起来像原始仓库?
*master
test
origin
, 从新克隆的代码的角度来看。当你克隆时,只会为HEAD
创建一个本地分支,其他分支仍停留在origin
。如果你想将这些分支作为本地分支使用,你需要像任何其他远程仓库一样创建本地分支。此外,你似乎忽略了我建议命令中的HEAD
参数,这样你就不会遇到你在更新中提到的无HEAD状态。 - janos