【问题标题】:Clone only one branch [duplicate]只克隆一个分支[重复]
【发布时间】:2011-06-16 05:38:41
【问题描述】:

我想知道如何只克隆一个分支而不是克隆整个 Git 存储库。

【问题讨论】:

  • 其他几个人指出的非常正确:除非将大文件提交给某些分支,而从不提交给其他分支,否则这实际上不会产生太大影响。
  • @Jefromi:克隆它真的很重要。请参阅此链接:stackoverflow.com/questions/14682245/…
  • @AmolMKulkarni 就像我在两年前所说的那样,只有当某些分支包含大量其他分支不包含的数据时。您链接到的问题实际上并没有说只有一个分支更小 - 如果所有这些巨大的大小都只是在所有分支的共同历史中,那么克隆一个分支将同样大。
  • 当某些收件人只打算查看某些分支及其历史记录时,这也会有所不同。
  • VonC 的超级完整答案:stackoverflow.com/a/9920956/1579667

标签: git github


【解决方案1】:

来自公告Git 1.7.10(2012 年 4 月):

  • git clone 学习了 --single-branch 将克隆限制为单个分支的选项(惊喜!);未获取分支历史记录的标签。

Git 实际上只允许你克隆一个分支,例如:

git clone -b mybranch --single-branch git://sub.domain.com/repo.git

注意:还有you can add another single branch or "undo"这个动作。

【讨论】:

  • 谢谢!如果 --single-branch 给你一个错误,只需删除它并保留 -b :)
  • @Brauson 如果你只是放 -b 然后你克隆所有的分支,然后检查那个分支。这不是预期的结果。所以我建议你,如果可以将 git 更新到最新(或> = 1.7.10)并且该命令不会出错。
  • 有人知道如何克隆两个分支 - 或者将另一个分支添加到单个分支克隆的 repo 中吗?
  • 只是一个花絮,如果您看到任何与访问相关的问题,请使用 https URL 而不是 git@ URL(即 ssh URL)
  • @BillyMoon 您是否找到了仅克隆一组分支(不仅是一个分支,也不是全部)的答案?如果你这样做了,请分享
【解决方案2】:

你可以用

创建一个新的仓库
git init 

然后使用

git fetch url-to-repo branchname:refs/remotes/origin/branchname

仅将那个分支提取到本地远程跟踪分支中。

【讨论】:

  • 你把“branchname”换成你想要的分支名称了吗?
  • @Xcode:如果你这样做,你可能想做git remote add origin <url>,这样你就会得到一个遥控器,就像你克隆了一样。 (然后您可以在 .git/config 中编辑 refspec 以避免全部获取。)
  • 直接使用 git fetch 不会添加远程。我刚刚用过: git init ; git remote add origin git@github.com:... ; git fetch origin :refs/remotes/origin/ ; git checkout
  • @hugemeow:你可以使用git pull,但问题是如何克隆一个分支。 git pull 还会将该分支合并到您的本地分支中,这可能需要也可能不需要。如果git remote -v 没有输出,那么我猜你没有遥控器。
  • 可能值得指出的是,您必须将“branchname”的两个实例替换为您的分支的实际名称。
【解决方案3】:

--single-branch” 开关是你的答案,但它只有在你有 git 版本 1.8.X 以后才有效,首先检查

#git --version 

如果您已经安装了 git 版本 1.8.X,那么只需使用“-b 分支和 --single 分支”来克隆单个分支

#git clone -b branch --single-branch git://github/repository.git

默认情况下,在 Ubuntu 12.04/12.10/13.10 和 Debian 7 中,默认的 git 安装仅适用于 1.7.x 版本,其中 --single-branch 是未知的转变。在这种情况下,您需要先从非默认 ppa 安装较新的 git,如下所示。

sudo add-apt-repository ppa:pdoes/ppa
sudo apt-get update
sudo apt-get install git
git --version

现在安装 1.8.X 后,只需执行以下操作:

git clone -b branch --single-branch git://github/repository.git

Git 现在只会从服务器下载一个分支。

【讨论】:

  • +1 快速了解如何在旧版本的 Debian 发行版中更新 git。
  • 小补充:要获取add-apt-repository命令,安装software-properties-common包,我还得安装python-software-properties。 (我知道这是一个旧答案,但它仍然相关;至少对我来说是这样!)。
【解决方案4】:

我已经完成了以下单个 git 命令:

git clone [url] -b [branch-name] --single-branch

【讨论】:

  • 我也是,会用这个命令克隆单个分支
猜你喜欢
  • 2022-01-20
  • 2019-01-19
  • 2020-07-22
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 2012-04-03
  • 2019-12-28
  • 1970-01-01
相关资源
最近更新 更多