如何从 GitHub 下载单个提交差异?

Posted

技术标签:

【中文标题】如何从 GitHub 下载单个提交差异?【英文标题】:How to download a single commit-diff from GitHub? 【发布时间】:2014-03-21 03:50:13 【问题描述】:

我想通过 Web 界面从 GitHub 获得一个提交(我们称之为 $SHA)。

例如:

$ git clone http://github.com/foo/bar
$ cd bar
$ git format-patch -o .. $SHA~1..$SHA
$ cd ..
$ rm -rf bar

...但不必克隆整个存储库(有问题的存储库很大)。

显然 GitHub 可以通过 Web 界面显示给定提交的差异,但我如何将其提取到(统一的)差异文件中(理想情况下,提交消息完好无损)?

【问题讨论】:

Download Github pull request as unified diff 的可能重复项 @ChillarAnand:不,不是。您的链接是关于拉取请求,而不是来自单个提交的差异。 【参考方案1】:

我发现我必须在末尾添加一个 /,即

https://github.com/foo/bar/commit/$SHA.patch/

【讨论】:

从今天开始,我无法重现这个:github.com/torvalds/linux/commit/…(没有斜杠)对我来说很好(用 firefox、cURL 和 wget 测试)【参考方案2】:

好的,我自己找到答案了。

.patch(或.diff)添加到提交URL 将提供一个不错的补丁:

https://github.com/foo/bar/commit/$SHA.patch

感谢Ten Things You Didn't Know Git And GitHub Could Do...

【讨论】:

我们可以在git apply命令中直接使用这个url吗?喜欢git apply <url.diff> @DarshanL 好吧,这是一个完全不同的问题,关于git cmdline 工具的功能(并且超级简单的试用 ;-))并且与 github 无关(github 只是提供这样的文件;但是通过 http:// 提供的任何补丁文件都可以)-但是简短的回答可能是:否 如果补丁在多个提交中完成,是否还有一种简单的方法来获取补丁? (而不是下载和应用几个补丁) 如果你得到Content containing PDF or PS header bytes cannot be rendered from this domain for security reasons..patch,试试.diff。它对我有用。

以上是关于如何从 GitHub 下载单个提交差异?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用命令行从私有 github 存储库下载单个原始文件?

如何在github上下载单个文件夹?

如何强制删除远程分支在GitHub上

从GitHub下载单个文件

GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流(转载)

从历史记录中删除单个提交[重复]