【问题标题】:Is it possible to clone only certain commit from a git repo with depth 1?是否可以从深度为 1 的 git 存储库中仅克隆某些提交?
【发布时间】:2011-11-04 00:44:46
【问题描述】:

pip 包管理器允许installing from various VCS 包括git

Pip 目前支持通过 git、git+http 和 git+ssh 进行克隆:

-e git://git.myproject.org/MyProject.git#egg=MyProject
-e git+http://git.myproject.org/MyProject/#egg=MyProject
-e git+ssh://git@myproject.org/MyProject/#egg=MyProject

传递分支名称、提交哈希或标签名称也是可能的:

-e git://git.myproject.org/MyProject.git@master#egg=MyProject
-e git://git.myproject.org/MyProject.git@v1.0#egg=MyProject
-e git://git.myproject.org/MyProject.git@da39a3ee5e6b4b0d3255bfef95601890afd80709#egg=MyProject

当包很小时这很好,但是当包很大时它变得很慢(例如Django)。如果我只需要 master 分支的最后一次提交,那么我可以使用 --depth 1 参数进行 git clone。

一般来说,是否有可能在没有完整的回购历史的情况下只获得某个提交?至少来自github?

【问题讨论】:

    标签: git pip git-clone


    【解决方案1】:

    由于安全原因,您既不能远程执行特定提交,也不能远程执行 clonefetch,更不用说深度 1:http://thread.gmane.org/gmane.comp.version-control.git/73368/focus=73994

    http://git.661346.n2.nabble.com/Fetch-by-SHA-missing-td5604552.html

    【讨论】:

    • 感谢您的链接。我可以为特定的提交/分支/标签获取一个 tarball,例如mkdir src ; curl https://nodeload.github.com/django/django/tarball/1.3 | tar xz --directory=./src 然后从目录pip install src/django-django-* 安装
    【解决方案2】:

    据我所知,没有。您可能想在git mailing list 上询问这个问题。

    【讨论】:

      【解决方案3】:

      您可以使用 GitHub API 获取最后/任何提交:http://developer.github.com/v3/repos/commits/#get-a-single-commit

      这不是 git 命令,您需要发出 HTTP 请求、解析 JSON 响应并使用 diff-data 下载文件。

      【讨论】:

        猜你喜欢
        • 2013-11-06
        • 2015-05-03
        • 2013-06-04
        • 2021-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-07
        • 1970-01-01
        相关资源
        最近更新 更多