从Github仓库中只fork一个特定的分支

13
假设有一个名为O的官方存储库,拥有分支B1B2B3
一个用户在他的Github账户上fork了这个存储库,并且创建了一个自己的分支B4并公开可用。
我也fork了同样的官方存储库,但是我想要fork那个用户的B4分支,而不影响我的原始副本。
我不能再次fork整个官方存储库,因为我已经为自己创建了几个自定义分支。
那么,如何将一个特定的分支fork到我的Github存储库中?
3个回答

13
你可以将他的代码库拉到你本地的 git 仓库中,然后将其推送到你托管在 GitHub 上的仓库中。
首先,向该用户的 GitHub 页面添加一个远程仓库。
git remote add other-user http://github.com/otheruser/repo

然后在您的存储库中对该分支进行本地检出。

git checkout -b B4 other-user/B4

最后,将该分支推送到托管在GitHub上的存储库中。

git push origin B4:B4

它正在产生致命错误。用户存储库的URL类似于“user/repo/tree/sg/search”。我只将此路径添加到远程。 - xan
添加远程时提供的URL是什么? - keelerm
那不是正确的路径。转到该用户的GitHub页面,并复制顶部提供的URL。它与最初克隆存储库时使用的相同。 - keelerm
我只尝试使用那个URL来完成它。忽略我之前写在这里的另一个URL。但是我仍然遇到了这个错误:fatal: git checkout: updating paths is incompatible with switching branches. 您可以在此处查看存储库:https://github.com/tmuras/moodle。我想fork分支gs。请帮帮我! - xan
请查看这个 Stack Overflow 的答案,它应该可以解决你遇到的问题。https://dev59.com/1XNA5IYBdhLWcg3wfNyO - keelerm
只是要去做它。我已经按照所有步骤进行了操作。当我将其“push”到我的Github存储库时,终端还显示“一切都是最新的”。但是并没有形成这样的分支。 - xan

8
将该用户的代码库作为您工作目录下的“远程代码库”添加:
```html

将该用户的代码库作为您工作目录下的“远程代码库”添加:

```
git remote add someuser https://github.com/someuser/somerepo.git

完成此操作后,您需要从该用户的代码库中获取更改。以后,您可以在任何时候执行此操作,而不会影响本地代码库中的其他内容。

git fetch someuser

将用���的B4分支合并到您自己的B5中:
git checkout -b B5 someuser/B4

即创建一个名为B5的新分支(-b),起点使用someuser/B4


到目前为止,我已经按照您的指示完成了所有操作。在执行 git branch -r 命令时,它显示了远程 /someuser 下的存储库。现在,我该如何将它推送到我的 Github 存储库? - xan
查找您的Github存储库的远程名称。它可能是“origin”,但您可以使用“git remote -v”进行双重检查。然后运行“git push origin B5”。 - legoscia
如果您只想获取一个分支:git fetch someuser branchname - Donshel

5

@keelerm提供的答案是正确的,但可能会因为该答案所遵循的命名约定而引起一些混淆。

假设你要克隆的用户分支拥有github用户名Naruto。因此,基本上是Naruto从官方仓库O创建了一个名为B4的分支,你想要这个分支存在于你的系统中。

  1. 首先,检查是否已经添加了Naruto的远程仓库,使用git remote -v命令。 如果你看到类似https://github.com/Naruto/O (fetch)https://github.com/Naruto/O (push)的东西,说明你已经添加了远程仓库。 跳到第3步。

  2. 在这一步中,我们将添加NarutoO分支的远程仓库,以便我们可以从中获取所有信息。选择任何方便的名称用于引用远程仓库。 为了说明目的,我将使用Kyuubi。使用此命令:git remote add Kyuubi https://github.com/Naruto/O

  3. 现在,你需要从Naruto的仓库中获取更改。 使用此命令:git fetch Kyuubi

  4. 在这一步中,我们将从NarutoB4创建自己的分支myB4。使用此命令:git checkout -b myB4 Naruto/B4

  5. 如果你需要立即在Github上反映同名的myB4分支,请使用此命令:git push origin myB4:myB4

就是这样。现在,你拥有了一个名为myB4的分支来自Naruto的派生仓库O,你的分支myB4包含与NarutoB4相同的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接