1

我正在尝试将 git bundle 的一个子集拉入一个仓库。

设置

从这个回购开始。

R1: A --> B --> C --> D --> E --> F

我已经创建了这些 git 包

# git bundle create B1 C..E
# git bundle create B1 B..F

B1:       C --> D --> E
B2: B --> C --> D --> E --> F

我从 C 创建了一个浅层克隆,深度 1

# git clone --depth 1 file:///R1 R2
R2: C

拉捆

从 R2 我可以从 B1 拉得到:

# git pull B1 main
R2: C --> D --> E

但是当我试图从 B2 中提取时,我收到了这个错误消息

# git pull B2 main
error: Repository lacks these prerequisite commits:
error: B

这是真的,R2 没有提交 B。

有没有办法让它忽略 B 并且只从 C 填充并得到这个?:

R2: C --> D --> E --> F
4

1 回答 1

0

为每个提交创建一个包。在这里,我们移动分支“main”,以便每个捆绑包都有相同的分支可供拉取。

#B3: A --> B
git branch -f main B
git bundle create ../B3 A..main
#B4: B --> C
git branch -f main C
git bundle create ../B4 B..main
#B5: C --> D
git branch -f main D
git bundle create ../B5 C..main
#B6: D --> E
git branch -f main E
git bundle create ../B6 D..main
#B7: E --> F
git branch -f main F
git bundle create ../B7 E..F

然后按顺序从它们中拉出。

git pull B3 main
git pull B4 main
git pull B5 main
git pull B6 main
git pull B7 main

您可以跳过拉 B3 (A-->B) 和 B4 (B-->C),因为它们无论如何都会失败。

于 2021-03-13T14:39:28.117 回答