【问题标题】:Fork from a branch in github从 github 的一个分支分叉
【发布时间】:2012-03-02 22:16:00
【问题描述】:

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

【问题讨论】:

  • 不清楚是否需要clone或fork一个分支
  • 您在问两个不同的问题:1. 在 github 上分叉,即 github->github 2. 克隆到您的 PC,即 github->PC。 2.你可以做任何你想做的事,只需检查git help clone。也许减少你的问题并专注于1。?

标签: github branch git-branch git-fork


【解决方案1】:

我还不知道本地方法,但你可以按照这个食谱来做:

  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”会导致这种行为)。

【讨论】:

  • 惊人的蝙蝠侠台阶山!两年后(2015)有更新/更简洁的方法吗?
  • 我没有再这样做了……
  • 我有一个分叉的 github 存储库。在我 fork 之后,原始 repo 所有者创建了一个新分支。我不知道如何将该分支复制到我的叉子上。这些步骤奏效了。谢谢。
  • 5 年过去了,还是没有更简单的方法?
【解决方案2】:

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

【讨论】:

  • ... 甚至稍后删除分支。
  • 如果整个仓库都被克隆了,怎么会在执行“git branch”命令时,只显示master分支..而不是github上显示的所有分支?
  • 您可以执行 git branch -d 来在本地删除其他人。
  • @jan try git branch -a(迟到总比没有好)
  • “克隆”有很多不同的含义,看看git help clone,你会发现原生git提供了比github forking更多的选择——包括--single-branch
【解决方案3】:

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

$ git clone git@bitbucket.org:git_username/git_repository_example -b release1.0 --single-branch

【讨论】:

  • 那是克隆,不是分叉。
  • 发问者已经问了这个问题....是否可以只克隆 1.9 分支而不是 master 分支?是否可以将特定分支克隆到我的 PC 上?.. 请在发表评论之前阅读完整的问题。谢谢。
  • 对不起。你说得对。尽管更改问题的标题会很好。我尝试了您的解决方案,然后意识到它对我的问题没有帮助。
【解决方案4】:

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

  1. 点击GitHub.com上repo的fork按钮:

  2. 确保您已安装 desktop client

  3. 点击此按钮:

  4. 克隆 repo

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

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

【讨论】:

  • 精美的插图指南。 +1
  • 我相信这仍然会在服务器端的 fork 中留下大量虚假分支。目前尚不清楚为什么会出现这个问题,但 git clone --single-branch 并不是真正的问题
  • @MarcH 是的,如果不再需要使用此方法创建的分支,则需要在之后手动删除它。
【解决方案5】:

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

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

就是这样。你有分支。

【讨论】:

    【解决方案6】:

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

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

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

    【讨论】:

      【解决方案7】:

      一种快速的替代方法是创建您自己的新存储库

      转到https://github.com/new 并创建一个新的回购。不要使用 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 和一个可以构成拉取请求的分支。

      【讨论】:

        【解决方案8】:

        解决方案:

        对于 GitHub 上的远程仓库和本地仓库

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

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

        Step One

        Step Two

        仅适用于本地存储库

        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

        【讨论】:

          【解决方案9】:

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

          【讨论】:

          • 当我点击“分叉”时,它只是将我的现有分叉发送到我自己的仓库,没有新的分叉。
          • 这不起作用,“Fork”按钮总是克隆所有分支。
          猜你喜欢
          • 2012-06-19
          • 2014-01-21
          • 1970-01-01
          • 2020-01-29
          • 1970-01-01
          • 2011-05-19
          • 2011-12-29
          • 2011-06-15
          • 2012-08-27
          相关资源
          最近更新 更多