我猜大多数人,开发人员,使用任何VCS,我希望你们中的一些人使用Git。您是否有任何提示或技巧如何获取存储库中单个文件的下载URL?
我不想要显示原始文件的URL;在二进制文件的情况下它是无用的。
http://support.github.com/discussions/feature-requests/41-download-single-file
甚至可以将GitHub用作“下载服务器”吗?
如果我们决定切换到Google代码,那么此处提供的功能是什么?
或者是否有开源项目的免费托管和VCS?
Git不支持下载存储库的部分内容。你必须下载所有这些。但你应该能够用GitHub做到这一点。
当您查看文件时,它具有指向“原始”版本的链接。 URL的构造是这样的
https://raw.githubusercontent.com/user/repository/branch/filename
通过填写URL中的空白,您可以使用Wget或cURL(使用-L
选项,见下文)或其他任何内容来下载单个文件。同样,你不会通过这样做获得Git使用的任何漂亮的版本控制功能。
更新:我注意到你提到这对二进制文件不起作用。您可能不应该在Git存储库中使用二进制文件,但GitHub有一个可用于上载文件的每个存储库的下载部分。如果需要多个二进制文件,可以使用.zip文件。下载上传文件的URL是:
https://github.com/downloads/user/repository/filename
请注意,上面给出的来自github.com
上的链接的URL将重定向到raw.githubusercontent.com
。您不应该直接使用此HTTP 302重定向提供的URL,因为,根据RFC 2616:“由于重定向有时可能会被更改,因此客户端应该继续使用Request-URI进行将来的请求。”
您应该使用文件的raw
URL。
例如,下载AFNetworking的自述文件:
curl https://raw.githubusercontent.com/AFNetworking/AFNetworking/master/README.md > ADREADME.md
由于它是一个公共回购,您不需要任何凭据。请注意网址的种类:raw.githubusercontent.com/path/to/file
这种方法适用于Windows,因为我从未使用过MAC,因此我不知道MAC中的备用键是什么,我将在下面提到。
我们来谈谈CSV文件。如果要下载CSV文件:
请记住,您必须同时按Alt并单击左键。只需单击“原始”按钮,即可在浏览器中打开CSV。
我希望有所帮助。
这肯定会奏效。至少在Chrome中。右键单击“Raw”图标 - > Save Link As。
您应该使用GitHub的Releases功能将可下载数据(例如已编译的二进制文件)与用于生成该数据的源代码的标记版本相关联,而不是链接到repo中的特定文件。
https://github.com/blog/1547-release-your-software
我们很高兴地宣布Releases,一个向最终用户发送软件的工作流程。版本是具有更改日志和二进制资产的一流对象,它们提供了超出Git工件的完整项目历史记录。
发行版附带发行说明和下载软件或源代码的链接。
遵循许多Git项目的约定,版本与Git标签相关联。您可以使用现有标记,也可以在发布标记时创建标记。
我最近发现了一个名为gitzip
的服务,它也是开源的:
网站 - http://kinolien.github.io/gitzip/
昼夜派对
访问上面的站点,输入repo或目录URL,您可以将单个文件或整个目录下载为zip文件。
现在可以使用此Google Chrome扩展程序下载存储库中的任何文件或任何特定文件夹:
GitZip for github:link:raw
https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn
Raw
按钮。对于使用GitHub Enterprise的用户,您需要在以下方案中构建URL
curl https://raw.githubusercontent.com/user/repo/filename --output filename
详细信息可以在这里找到
Invoke-WebRequest http://github.mycompany.com/api/v3/repos/my-org/my-repo/contents/myfiles/file.txt -Headers @{"Authorization"="token 8d795936d2c1b2806587719b9b6456bd16549ad8"}
我使用以下格式,我觉得告知路径非常重要。
const https = require('https');
const fs = require('fs');
const DOMAIN = 'raw.githubusercontent.com';
function writeFile(data, fileName) {
fs.appendFile(fileName, data.toString(), err => {
if (err) {
console.log('error in writing file', err);
}
});
}
function EOF(data) {
console.log('EOF');
}
function getFileName(pathToFile) {
var result = pathToFile.split('/');
var splitLength = result.length;
return result[splitLength - 1];
}
function getFile(branchName, username, repoName, ...pathToFile) {
pathToFile.forEach(item => {
const path = `/${username}/${repoName}/${branchName}/${item}`;
const URL = `${DOMAIN}${path}`;
const options = {
hostname: DOMAIN,
path: path
};
var fileName = getFileName(item);
https
.get(options, function(res) {
console.log(res.statusCode);
/* if file not found */
if (res.statusCode === 404) {
console.log('FILE NOT FOUND');
} else {
/* if file found */
res.on('data', data => writeFile(data, fileName));
res.on('end', data => EOF(data));
}
})
.on('error', function(res) {
console.log('error in reading URL');
});
});
}
getFile('master', 'bansalAyush', 'InstagramClone', '.babelrc', 'README.md');
^^^以上在我的脑海里并不是很完整
https://github.com/user/repository/raw/branch/filename
有人说raw.github.com或raw而不是blob,但第二行对我有用,我希望能帮助别人......
2¢
您可以尝试https://github.com/<user>/<repoROOTname>/blob/master/<path>/<filename>?raw=true
,它是一个命令行工具,可以从GitHub仓库下载单个文件夹或文件。
想一个真实的场景:您正在访问以下网页页面并想单独下载github-files-fetcher子目录。
async
很抱歉不允许发布图片。
使用https://github.com/reduxjs/redux/tree/master/examples,您应该首先复制该页面的github-files-fetcher
,即url
,然后在命令行中运行以下命令:
这对我来说现在很有用......
...刚刚为我的DL工作.php文件。
您可以使用V3 API来获取这样的原始文件(您需要一个OAuth令牌):
curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://api.github.com/repos/owner/repo/contents/path
所有这一切都必须在一条线上。 -O
选项将文件保存在当前目录中。您可以使用-o filename
指定不同的文件名。
要获取OAuth令牌,请按照以下说明操作:https://help.github.com/articles/creating-an-access-token-for-command-line-use
我也把它写成了一个要点:https://gist.github.com/madrobby/9476733
根据this gist,您可以使用wget或cURL:
wget --no-check-certificate --content-disposition https://URL-from-step3/
curl -LJO https://URL-from-step3/
GitHub Mate轻松下载单个文件,只需点击图标即可下载,目前只适用于Chrome。
现在可以在GitHub中找到任何文件。您需要翻译raw.github.com的文件。例如,如果您的文件位于您的存储库中:
https://github.com/<username>/<repo>/some_directory/file.rb
使用wget,您可以从以下位置获取原始文件:
https://raw.github.com/<username>/<repo>/<branch>/some_directory/file.rb
Rails Composer就是一个很好的例子。
跟进thomasfuchs的说法,但对于GitHub Enterprise用户来说,这是你可以使用的。
curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://your_domain/api/v3/repos/owner/repo/contents/path
你可以这样使用curl
:
curl -OL https://raw.githubusercontent.com/<username>/<repo-name>/<branch-name>/path/to/file
O
表示curl下载内容
L
意味着curl遵循重定向
如果你想使用github
从wget
下载一个zip文件
wget -O filename.zip https://github.com/downloads/user/repository/filename.zip?raw=true
有关详细信息,请参阅此website