有没有办法从 GitHub 上的特定分支分叉?… 例如,moodle 有许多分支(1.9、2.0 … 等等)。可以只克隆 1.9 分支而不是 master 分支吗?是否可以将特定分支克隆到我的 PC 上?
9 回答
我还不知道原生方式,但你可以按照这个食谱来做:
- 将 GitHub 网站上的相关存储库(称为“上游”)分叉到那里的工作区。
- 运行 GitHub 桌面应用程序并将存储库克隆到您的 PC 上。
- 使用 GitHub 桌面应用程序在存储库中打开一个 shell。(
git
除非您手动配置,否则这些命令在默认 PowerShell 中不可用。) 将源存储库设置为上游:
git remote add upstream https://github.com/{user}/{source-repo}.git
获取完整的上游存储库。(现在,你只有它的 master 分支的一个副本。)
git fetch upstream
让您的文件系统复制您想要的分支并为其命名:
git checkout upstream/{branch-in-question} git checkout -b temporary
使用 GitHub 桌面应用程序发布您的存储库。
- 在 GitHub 网站上,打开您的存储库并单击“设置”。
- 将“默认分支”更改为“临时”。(只需更改下拉菜单,无需单击“重命名”按钮。)
- 返回您的存储库,转到“分支”选项卡,现在您可以删除“主”分支。
删除 shell 上的 master 分支并创建一个新的 master 分支:
git branch -d master git branch master git checkout master git -d temporary
再次使用 GitHub 桌面应用程序发布您的存储库。
- 在 GitHub 网站上,打开您的存储库并单击“设置”。
- 将“默认分支”更改回(新)“主”分支。
- 返回您的存储库,转到“分支”选项卡,现在您可以删除“临时”分支。
这应该是你要找的。也许 GitHub 将来会提供一种更方便的方式来执行此操作(例如,单击项目分支中的“Fork”会导致这种行为)。
克隆意味着您在帐户中创建整个存储库的副本,包括所有分支和标签。但是,您可以随意切换和跟踪分支。
是的,您可以克隆单个分支。例如,您有一个名为 release1.0 的分支。如果您想将此分支克隆到您的电脑中,请使用以下代码行:
$ git clone git@bitbucket.org:git_username/git_repository_example -b release1.0 --single-branch
我在这里发布我使用的方法。像 OP 一样,我只想复制/分叉一个分支。但是找不到简单的方法。
- 在您的仓库中创建一个新分支。它不需要与您要分叉的分支同名
- 创建后,验证它是选定的分支,然后单击“比较”
- 颠倒比较顺序(我有一个用户脚本,如果你想测试它,请查看我的个人资料)。
- “基础”存储库必须是您的,以及您创建的分支
- “头”存储库是原始存储库,分支是您要分叉的分支
- 点击“创建拉取请求”并继续,直到应用 PR
而已。你有分支。
解决方案:
对于 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。
一种快速的替代方法是创建自己的新 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 和一个可以构成拉取请求的分支。
在源代码库中切换到你需要的分支点击“Fork”。你会得到分叉的主人和你所在的分支。我不知道它如何与更多的分支一起工作,但对于我的需要来说效果很好。