如何分叉分支而不是完整的存储库? 我希望只复制分支https://github.com/COMSYS/contiki/tree/split-buffer而不是完整的存储库https://github.com/jenshiller/contiki。 How to fork a branch in Git?不适用于我的情况。我不想克隆分支。
答案 0 :(得分:12)
在github(以及git的心理框架中)中,克隆并分叉存储库。
没有办法分叉;这没有意义。只需分叉项目,然后解决您感兴趣的分支机构。您不会因此而失去任何东西。
"在分支机构工作"通常意味着你
git clone http://repository
),然后git checkout awesome-branchname
),git checkout -b new-even-more-awesome-branch-name
)答案 1 :(得分:1)
首先,马库斯的解释完全正确。您只能分叉一个仓库。但是,在本地克隆fork之后,可以通过运行单行管道命令来获得所需的最终结果。不过,这不是Github本身执行的单步操作。
所需的最终结果是其中只有1个分支的fork。为此,请运行此命令。在这里,我假设您的fork的远程名称为fork
:
git branch -r --list 'fork/*' | \
grep -v "$(git rev-parse --abbrev-ref fork/HEAD)" | \
sed 's~fork/~~' | \
grep -v split-buffer | \
xargs git push fork --delete
请注意,要使该命令的git rev-parse
部分起作用,您必须事先运行此命令:
git remote set-head fork master
我们这样做的原因是因为并非每个回购都将其HEAD设置为master
。有些使用staging
或develop
或其他。因此,这基本上比仅假设遥控器的主分支为master
更灵活。我们必须过滤掉远程端的HEAD分支,因为您不能远程删除main分支。
运行上述命令的最终结果是,远程上最多将剩下两个分支:
fork/HEAD
所引用的符号ref)请注意,如果您要保留的分支恰好是HEAD分支,那么您将只剩下1个分支。
如果您经常这样做,我建议为此编写脚本。您可以将其命名为git-delete-all-except.sh
之类的名称,并将其通用化为一个远程名称(而不是假设fork
),并保留一个分支列表,而不只是一个分支。
以 not 作为脚本的反论点:这是一个危险的操作,您绝对不希望在您或其他人曾经使用过的fork或其他类型的仓库中运行它积极地已经在努力并将变更推向!!
答案 2 :(得分:0)
git clone --single-branch u://r/l
仅克隆主分支
git clone -b $branch --single-branch u://r/l
仅克隆所需的特定分支。
但是您不需要该选项,因为git clone
本身只是一些简单设置的简写。
这里是git clone u://r/l
:
git init l; cd $_
git remote add -f origin u://r/l
这是git clone --single-branch -b whatever u://r/l
:
git init l; cd $_
git remote add -ft whatever origin u://r/l
和-f
选项只是“事后进行git fetch
”的简写。
答案 3 :(得分:0)
我通常会选择How do I clone a single branch in Git?
中所述的选项 git clone <url> --branch <branch> --single-branch [<folder>]
它快速,干净,如果我想create a new repo out of the branch,也很容易做到。