首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从存储库中下载特定的git提交?

如何从存储库中下载特定的git提交?
EN

Stack Overflow用户
提问于 2010-09-13 11:31:10
回答 8查看 39K关注 0票数 20

我没有本地代码副本/等,我只想下载一个特定的git提交,这样我就可以查看它。我有git存储库的url:

git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git

和提交散列:

代码语言:javascript
复制
ee9c5cfad29c8a13199962614b9b16f1c4137ac9

我如何使用git下载这个提交(我不想要整个repo,只需要一个提交补丁)?我已经阅读了git-pull和git-cherry-pick的手册页,并摆弄着命令,但没有成功。

克隆存储库确实不是一个选择,因为一些内核存储库太大了,下载起来也很慢(几个小时)。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-09-21 23:42:27

这似乎是不可能的。根据kernel.org上的一个discussion,该协议将只允许获取命名ref。如果你不想从git网站上下载快照,你必须克隆整个repo。

(您可能希望阅读git-fetchgit-ls-remote的手册。)

票数 23
EN

Stack Overflow用户

发布于 2010-09-21 23:30:53

在一般情况下,您可以使用git archive--remote标志来完成此操作,如下所示:

代码语言:javascript
复制
$ git archive -o repo.tar --remote=<repo url> <commit id>

因此,在您的示例中,您将使用:

代码语言:javascript
复制
$ git archive -o repo.tar --remote=git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git ee9c5cfad29c8a13199962614b9b16f1c4137ac9

这将为您提供回购在该时间点的状态。请注意,您不会获得整个repo,因此您无法使用已下载的内容与上游repo进行实际交互。

但是,必须在服务器端启用远程使用git archive,而且它不在Linux内核的Git服务器上。但是,您可以通过使用http://git.kernel.org/?p=<path to repo>;a=snapshot;h=<commit id>;sf=tgz形式的URL来获取副本。因此,对于您的repo,您可以使用wget或curl来获取使用该URL的文件。

票数 13
EN

Stack Overflow用户

发布于 2012-09-27 21:03:58

我知道当你有一个repo的克隆(或类似的repo)时,这是有效的。

代码语言:javascript
复制
git fetch git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
git cherry-pick ee9c5cfad29c8a13199962614b9b16f1c4137ac9

Fetch下载远程ref(但不是整个repo,我不认为),这样你就可以用其他命令引用它们。然后,您精挑细选该提交,它会尝试将diff应用于您的本地树。

我没有在本地没有git repo的情况下尝试过它,但我已经在不是彼此分支的repos上尝试过了。您可能会遇到合并冲突,但您可以手动清除这些冲突。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3697707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档