我没有本地代码副本/ etc,我只想下载一个特定的git提交,以便我可以查看它.我有git存储库的url:
混帐://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
和提交哈希:
ee9c5cfad29c8a13199962614b9b16f1c4137ac9
Run Code Online (Sandbox Code Playgroud)
我如何使用git下载这个提交(我不想要整个repo,只需要一个提交补丁)?我已经阅读了git-pull和git-cherry-pick的手册页,并且在没有运气的情况下摆弄了这些命令.
克隆存储库确实不是一种选择,因为某些内核存储库非常大且下载速度慢(小时).
Jos*_*Lee 21
这似乎是不可能的.根据kernel.org 上的讨论,该协议将只允许获取命名引用.如果您不想从git网站下载快照,则必须克隆整个仓库.
(您可能希望阅读git-fetch和git-ls-remote的手册.)
mip*_*adi 13
在一般情况下,您可以使用--remote标志来执行此操作git archive,如下所示:
$ git archive -o repo.tar --remote=<repo url> <commit id>
Run Code Online (Sandbox Code Playgroud)
所以在你的例子中,你使用:
$ git archive -o repo.tar --remote=git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git ee9c5cfad29c8a13199962614b9b16f1c4137ac9
Run Code Online (Sandbox Code Playgroud)
那将在那个时间点给你回购状态.请注意,您将无法获得整个仓库,因此您无法实际与上载的仓库进行交互.
但是,git archive必须在服务器端启用远程使用,并且它不在Linux内核的Git服务器上.但是,您可以使用表单的URL来获取副本http://git.kernel.org/?p=<path to repo>;a=snapshot;h=<commit id>;sf=tgz.因此,对于您的repo,您可以使用wget或curl来使用该URL获取文件.