如何在本地机器上下载没有“git”的私有 GitHub 仓库?

如何在本地机器上下载没有“git”的私有 GitHub 仓库?

我想要做的是从 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"

我希望这能有所帮助。

相关内容