从命令行中的github下载特定文件,而不是克隆整个repo

时间:2012-02-06 12:10:33

标签: git github

如何使用命令行从github下载2个文件?
有些东西:

git fetch git://github.com/username/Project.git/file1
git fetch git://github.com/username/Project.git/file2

6 个答案:

答案 0 :(得分:24)

如果您转到该页面并查看“原始”提供的链接(在查看文件时位于左上角)。您将看到,您可以通过以下方式访问它:

https://github.com/username/repository/raw/$changeset_hash/path/to/file

您也可以提供分支(例如母版)或代码,而不是$changeset_hash

您可以使用类似wget的内容检索原始文件。

由于数据的存储方式,因此无法直接从.git-repository访问单个文件(据我所知)。

编辑:如果要从私人仓库访问文件,首先必须在帐户设置中创建具有相应权限的访问令牌。您可以使用github's API to access the content of a file,而不是调用上面的网址。请务必使用custom media types的Accept-header来获取原始数据。这可能看起来像这样:

curl \
  -H 'Authorization: token $YOUR_TOKEN' \
  -H 'Accept: application/vnd.github.v3.raw' \
  -O \
  -L 'https://api.github.com/repos/:owner/:repo/contents/:path'

-O将内容保存在本地文件中,其名称与远程文件名相同。为了便于使用,您可以将其包装在脚本中。 @Chris_Withers建议使用一个不错的python代码段进行编辑,不幸的是,这个代码更改了答案。

答案 1 :(得分:15)

从GitHub复制特定文件的原始链接。(当你在Github中打开文件时,在右上角你可以看到以原始模式打开文件的选项。以原始模式打开它并复制URL)< / p>

现在在命令行中使用curl命令下载文件。

curl -o filename raw-link-to-file

答案 2 :(得分:2)

在新的UI界面中(大约2020年6月),如果您的文件网址为

https://github.com/StellarCN/scp_zh/blob/master/fonts/SimHei.ttf

然后

wget https://github.com/StellarCN/scp_zh/blob/master/fonts/SimHei.ttf?raw=true

答案 3 :(得分:1)

git checkout  

E.g:

git checkout master~2 file1

git checkout --help寻求帮助)

答案 4 :(得分:0)

您可以尝试github-files-fetcher,它是一个命令行工具,可以从GitHub存储库下载单个文件夹或文件。

鉴于上面的示例,您可以使用以下命令从github提取两个特定文件:

fetcher --url="git://github.com/username/Project.git/file1" 
fetcher --url="git://github.com/username/Project.git/file2" 

请考虑一个更现实的情况:您正在访问以下网页,并且想单独下载async子目录。

https://github.com/reduxjs/redux/tree/master/examples

  

对不起,不允许发布图片。

使用github-files-fetcher,您应该首先复制该页面的https://github.com/reduxjs/redux/tree/master/examples/asyncurl,然后在命令行中运行以下命令:

fetcher --url=https://github.com/reduxjs/redux/tree/master/examples/async

答案 5 :(得分:0)

我在这里使用 linux,它对我有用

步骤 1 转到您要下载的文件并单击原始按钮

enter image description here

第2步从搜索栏中复制网址

enter image description here

步骤 3 在终端中运行命令

wget paste-url

enter image description here