33

有没有办法从 GitHub 上的特定分支分叉?… 例如,moodle 有许多分支(1.9、2.0 … 等等)。可以只克隆 1.9 分支而不是 master 分支吗?是否可以将特定分支克隆到我的 PC 上?

4

9 回答 9

26

我还不知道原生方式,但你可以按照这个食谱来做:

  1. 将 GitHub 网站上的相关存储库(称为“上游”)分叉到那里的工作区。
  2. 运行 GitHub 桌面应用程序并将存储库克隆到您的 PC 上。
  3. 使用 GitHub 桌面应用程序在存储库中打开一个 shell。(git除非您手动配置,否则这些命令在默认 PowerShell 中不可用。)
  4. 将源存储库设置为上游:

    git remote add upstream https://github.com/{user}/{source-repo}.git
    
  5. 获取完整的上游存储库。(现在,你只有它的 master 分支的一个副本。)

    git fetch upstream
    
  6. 让您的文件系统复制您想要的分支并为其命名:

    git checkout upstream/{branch-in-question}
    git checkout -b temporary
    
  7. 使用 GitHub 桌面应用程序发布您的存储库。

  8. 在 GitHub 网站上,打开您的存储库并单击“设置”。
  9. 将“默认分支”更改为“临时”。(只需更改下拉菜单,无需单击“重命名”按钮。)
  10. 返回您的存储库,转到“分支”选项卡,现在您可以删除“主”分支。
  11. 删除 shell 上的 master 分支并创建一个新的 master 分支:

    git branch -d master
    git branch master
    git checkout master
    git -d temporary
    
  12. 再次使用 GitHub 桌面应用程序发布您的存储库。

  13. 在 GitHub 网站上,打开您的存储库并单击“设置”。
  14. 将“默认分支”更改回(新)“主”分支。
  15. 返回您的存储库,转到“分支”选项卡,现在您可以删除“临时”分支。

这应该是你要找的。也许 GitHub 将来会提供一种更方便的方式来执行此操作(例如,单击项目分支中的“Fork”会导致这种行为)。

于 2013-02-14T07:39:47.223 回答
8

克隆意味着您在帐户中创建整个存储库的副本,包括所有分支和标签。但是,您可以随意切换和跟踪分支。

于 2012-02-10T12:49:20.273 回答
1

对于那些不喜欢使用命令行的人。这是使用 GitHub 桌面客户端的简单指南:

  1. 单击 GitHub.com 上 repo 的 fork 按钮:步骤1

  2. 确保您已安装桌面客户端

  3. 单击此按钮:第2步

  4. 克隆仓库

第三步

  1. 在桌面客户端中,选择所需的分支

第4步

  1. 选择你想要处理的分支,你就完成了

第五步

于 2017-06-01T16:48:11.023 回答
1

是的,您可以克隆单个分支。例如,您有一个名为 release1.0 的分支。如果您想将此分支克隆到您的电脑中,请使用以下代码行:

$ git clone git@bitbucket.org:git_username/git_repository_example -b release1.0 --single-branch
于 2015-10-19T02:24:43.403 回答
1

我在这里发布我使用的方法。像 OP 一样,我只想复制/分叉一个分支。但是找不到简单的方法。

  • 在您的仓库中创建一个新分支。它不需要与您要分叉的分支同名
  • 创建后,验证它是选定的分支,然后单击“比较”
  • 颠倒比较顺序(我有一个用户脚本,如果你想测试它,请查看我的个人资料)。
  • “基础”存储库必须是您的,以及您创建的分支
  • “头”存储库是原始存储库,分支是您要分叉的分支
  • 点击“创建拉取请求”并继续,直到应用 PR

而已。你有分支。

于 2020-04-29T17:26:23.257 回答
0

解决方案:

对于 GitHub 上的远程存储库和本地存储库

将所有分支 fork 到您的 GitHub 存储库后,您可以删除GitHub 存储库中的冗余分支。

然后你只能克隆你需要的分支到本地。

第一步

第二步

仅适用于本地存储库

git clone -b <branch name> --single-branch <repository>

如果您想进一步节省磁盘空间,可以克隆没有历史记录的远程存储库:

git clone -b <branch name> --depth 1 <repository>

注意: --depth 暗示 --single-branch 除非给出 --no-single-branch。

https://git-scm.com/docs/git-clone

于 2021-08-07T15:37:54.607 回答
0

一种快速的替代方法是创建自己的新 repo

转到https://github.com/new并创建一个新的 repo。不要使用 README 进行初始化。

向下滚动以获取您的git remote

在此处输入图像描述

然后:

git remote rm origin
git config master.remote origin
git config master.merge refs/heads/master
// Run code from above image
git push --set-upstream origin yourbranchname

您将拥有一个包含原始 repo 代码的新 repo 和一个可以构成拉取请求的分支。

于 2018-10-08T08:45:25.673 回答
0

我正在使用 bitbucket,但我相信这也适用于 GitHub。

  1. 创建一个新的存储库
  2. 使用 GitExtensions 签出分支
  3. 单击推送以打开推送对话框
  4. 将目标 URL 设置为新存储库
  5. 将目标分支设置为“master”

您的新存储库将仅包含一个分支的完整历史记录(并非所有分支(如分叉)都具有)。

GitExtensions 推送对话框

于 2016-09-16T10:03:32.430 回答
-2

在源代码库中切换到你需要的分支点击“Fork”。你会得到分叉的主人和你所在的分支。我不知道它如何与更多的分支一起工作,但对于我的需要来说效果很好。

于 2017-11-24T13:22:49.677 回答