我想要做的是从 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"
我希望这能有所帮助。