![如何在本地机器上下载没有“git”的私有 GitHub 仓库?](https://linux22.com/image/1403273/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%9C%AC%E5%9C%B0%E6%9C%BA%E5%99%A8%E4%B8%8A%E4%B8%8B%E8%BD%BD%E6%B2%A1%E6%9C%89%E2%80%9Cgit%E2%80%9D%E7%9A%84%E7%A7%81%E6%9C%89%20GitHub%20%E4%BB%93%E5%BA%93%EF%BC%9F.png)
我想要做的是从 GitHub 下载私人存储库档案,提取它,删除档案文件并复制下载项目内的某些目录。
我尝试使用wget
但无法授权自己:
wget --header='Authorization: token MY_TOKEN_CREATED_ON_GITHUB' https://github.com/MY_USER/MY_REPO/archive/master.tar.gz -O - | tar xz
我也尝试过cURL
:
curl -i -H 'Authorization: token MY_TOKEN_CREATED_ON_GITHUB' https://github.com/MY_USER/MY_REPO/archive/master.tar.gz > file.tar.gz | tar xz
这里授权通过了,但是我无法提取文件。
怎么做?
答案1
解决方案wget
如下:
wget --header="Authorization: token <OAUTH-TOKEN>" -O - \
https://api.github.com/repos/<owner>/<repo>/tarball/<version> | \
tar xz --strip-components=1 && \
cp -r <dir1> <dir2> ... <dirn> <destination-dir>/
笔记:
--strip-components=1
将删除 GitHub 创建的档案中包含的顶级目录,- 确保不要
/
在要复制的目录末尾放置尾随cp
(<dir1>
,,<dir2>
...,<dirn>
),并且尾随/
存在于目标目录的末尾(<destination-dir>
)。
答案2
如果您有自己的“个人访问令牌”,您可以使用 curl 命令下载存储库分支的存档:
curl -k --header "PRIVATE-TOKEN: xxxx" https://gitlab.xxxxx/api/v4/projects/<projectID>/repository/archive?sha=630bc911c1c20283d3980dcb95fd5cb75479bb9c -o myFilename.tar.gz
ProjectID 显示在 repo 的主页上。
从下拉菜单中选择所需的分支并复制右侧的 SHA 值后,您可以从 WebUI 获取 SHA 值。参见下面的屏幕截图:
另一种方法是通过 wget 执行此操作,如下所示:
wget --no-check-certificate -O myFilename.zip --header=PRIVATE-TOKEN:xxxx "https://gitlab.xxxx/api/v4/projects/<projectID>/repository/archive.zip?sha=630bc911c1c20283d3980dcb95fd5cb75479bb9c"
我希望这能有所帮助。