我想使用curl
下载我的GitLab私有仓库。我知道可以使用Gitlab API,但由于某些原因,它无法正常工作。
这种方法可行吗?每当我尝试这样做时,它总是返回登录页面。
这是可能的,只需按照以下步骤进行:
首先,您需要创建一个“个人访问令牌”:
为您的“个人访问令牌”输入名称。
勾选“api访问已验证用户的API”
点击“创建个人访问令牌”
页面将重新加载并保存您的新令牌。
确保您将令牌保存在安全的地方,否则您将无法再次查看它。
现在您有了“个人访问令牌”,您需要获取项目ID以使用API:
转至https://gitlab.com/api/v4/projects?private_token=XXXXXXXXXXXXXXXXXXXX(将X替换为您的新令牌)
从json中获取您的项目ID。
(或者您可以直接从其网页复制项目ID)
现在您可以调用:
wget -O your_project.tar.gz https://gitlab.com/api/v4/projects/0000000/repository/archive?private_token=XXXXXXXXXXXXXXXXXXXX
然后这将会把你的项目以.tar.gz
文件的形式下载下来。
编辑:如果你想要获取特定提交/标签的tarball,可以将&sha=...
参数添加到URL中,例如:
https://gitlab.com/api/v4/projects/24470128/repository/archive?private_token=XXXXXXXXXXXXX&sha=606e81c69eff27eccbbc59a0546a9439780dff55
curl https://git.local/user1/myrepo/raw/master/myfile.txt?private_token=ahgiretherghaeoi
<html><body>You are being <a href="https://gitlab.com/users/sign_in">redirected</a>.</body></html>
。意思是你正在被重定向到一个链接。 - Amin Yacurl http://gitlab.server/api/v3/session --data 'login=myUser&password=myPass'
curl --header "PRIVATE-TOKEN: QVy1PB7sTxfy4pqfZM1U" "http://example.com/api/v3/projects"
或者在你的情况下,获取存储库文件:
GET /projects/:id/repository/files
或者,直接下载一个文件。
https://bytebucket.org/$username/$repo/raw/$sha/$filename.jpg?token=$sometoken
- Khurshid Alam如果您拥有自己的“个人访问令牌”(如其他答案所述),您可以使用curl
命令下载存储库分支的归档文件:
curl -k --header "PRIVATE-TOKEN: xxxx" https://gitlab.xxxxx/api/v4/projects/<projectID>/repository/archive?sha=630bc911c1c20283d3980dcb95fd5cb75479bb9c -o myFilename.tar.gz
wget
实现:wget --no-check-certificate -O myFilename.zip --header=PRIVATE-TOKEN:xxxx "https://gitlab.xxxx/api/v4/projects/<projectID>/repository/archive.zip?sha=630bc911c1c20283d3980dcb95fd5cb75479bb9c"
gitlab.xxxxx
是什么?我猜 .xxxxx
不是一个有效的顶级域名... - Klesungitlab.xxxxx
是一个泛指,代表一个私有实体自行托管其Gitlab实例的URL。例如 gitlab.cnn.com 或 gitlab.facebook.com 或 gitlab.mycompany.com 等。 - Frak
myrepo-master-355be558eac20b8747727e82377522fad73b5f6e.zip
。是否可以强制指定归档文件的名称?例如“archive.zip”。我需要这样做是因为我无法在composer存储库中指定文件名。 - Ninj