仅在 Git 提交中克隆新上传的文件
Cloning Only Newly Uploaded Files In Git Commit
我正在尝试从在线存储库下载文件,主要是 PDF。
但是,我只想下载特定提交的文件。总归档文件超过 1400 个文件,最近的提交将大约 300 个文件添加到总归档文件中。
如何从存储库中仅克隆新上传的 300 个文件?
与我遇到的有关下载单个文件的其他类似问题不同,我想下载整个提交,它包含 300 多个文件。作为参考,回购协议在这里:
https://github.com/KingOfCramers/sidtoday
...我想下载(到我的本地计算机)的新文件的提交在这里:
https://github.com/KingOfCramers/sidtoday/commit/07b7008f215ffe784068d9d2d14fb5d76875ca24
is there really no way to simply clone/download the files uploaded by an individual commit?
是的,确实没有办法简单地克隆或下载在单个提交中更新的文件。
在 lesat,没有 in-Git 方式。如果您控制服务器,您可以使用 Git 作为 工具 来构建任何您喜欢的东西。如果服务器是 GitHub,那么,请看最后一段。
这个问题的根源在于提交不仅包含更改的文件,也不包含更改:每个提交都是所有 个文件的完整快照。因此,要找出发生了什么变化,您必须从 两个 快照开始。将此视为那些 Spot the Difference 游戏之一:拍一张照片对你没有好处,你必须两张都拍。
作为一个整体,Git 旨在提供 所有 快照。那些是承诺;提交是存储库中的内容;所以这些就是你得到的。如果你想要不同的结果,Git-on-the-server 有所有的快照,并且可以进行比较,你可以用它来编写你自己的软件来做你想做的任何事情,但是您需要控制 Git 服务器上的软件。幸运的是,您可以将整个存储库克隆到您的客户端,然后您的客户端就是一个非常好的服务器。
请注意,一旦您拥有一个克隆,git fetch
进入,该克隆使用一种协议,通过让两个 Gits 比较笔记。然后,服务器会准备一个所谓的 thin pack,其中包含您已有对象的增量(只要可行),以便您实际上只获得增量更改!但要使其工作,您必须有一个现有的克隆。
还要注意,如果您的服务器专门是 GitHub,GitHub 会提供 REST API(好吧,可能有多个 APIs:当前的 version 3), and you can use that API to compare commits and to download files. See in particular https://developer.github.com/v3/git/trees/ 关于获取树(每个提交中的快照是一棵树)。请注意,存在长度限制,如果超过,将强制您进行克隆。
我正在尝试从在线存储库下载文件,主要是 PDF。
但是,我只想下载特定提交的文件。总归档文件超过 1400 个文件,最近的提交将大约 300 个文件添加到总归档文件中。
如何从存储库中仅克隆新上传的 300 个文件?
与我遇到的有关下载单个文件的其他类似问题不同,我想下载整个提交,它包含 300 多个文件。作为参考,回购协议在这里:
https://github.com/KingOfCramers/sidtoday
...我想下载(到我的本地计算机)的新文件的提交在这里:
https://github.com/KingOfCramers/sidtoday/commit/07b7008f215ffe784068d9d2d14fb5d76875ca24
is there really no way to simply clone/download the files uploaded by an individual commit?
是的,确实没有办法简单地克隆或下载在单个提交中更新的文件。
在 lesat,没有 in-Git 方式。如果您控制服务器,您可以使用 Git 作为 工具 来构建任何您喜欢的东西。如果服务器是 GitHub,那么,请看最后一段。
这个问题的根源在于提交不仅包含更改的文件,也不包含更改:每个提交都是所有 个文件的完整快照。因此,要找出发生了什么变化,您必须从 两个 快照开始。将此视为那些 Spot the Difference 游戏之一:拍一张照片对你没有好处,你必须两张都拍。
作为一个整体,Git 旨在提供 所有 快照。那些是承诺;提交是存储库中的内容;所以这些就是你得到的。如果你想要不同的结果,Git-on-the-server 有所有的快照,并且可以进行比较,你可以用它来编写你自己的软件来做你想做的任何事情,但是您需要控制 Git 服务器上的软件。幸运的是,您可以将整个存储库克隆到您的客户端,然后您的客户端就是一个非常好的服务器。
请注意,一旦您拥有一个克隆,git fetch
进入,该克隆使用一种协议,通过让两个 Gits 比较笔记。然后,服务器会准备一个所谓的 thin pack,其中包含您已有对象的增量(只要可行),以便您实际上只获得增量更改!但要使其工作,您必须有一个现有的克隆。
还要注意,如果您的服务器专门是 GitHub,GitHub 会提供 REST API(好吧,可能有多个 APIs:当前的 version 3), and you can use that API to compare commits and to download files. See in particular https://developer.github.com/v3/git/trees/ 关于获取树(每个提交中的快照是一棵树)。请注意,存在长度限制,如果超过,将强制您进行克隆。