下载GitLab私有存储库

时间:2014-06-28 03:13:08

标签: git curl github gitlab

我想使用curl在GitLab中下载我的私人仓库。我知道我可以使用Gitlab API,但出于某种原因,它不起作用。

这可能吗?当我尝试这样做时,它总是返回登录页面。

5 个答案:

答案 0 :(得分:21)

是可能的,只需按照以下步骤操作:

  1. 首先,您必须创建“个人访问令牌”:

    1. 转到Your Profile > Settings > Access Tokens
    2. 输入“个人访问令牌”的名称。
    3. 选中“ api 访问经过身份验证的用户的API”

      Personal Access Tokens

    4. 点击“创建个人访问令牌”

    5. 该页面将重新加载并保存您的新令牌。
    6. 确保将令牌保存在安全的地方,您将无法再次查看。

      New "Personal Access Token"

  2. 现在您已拥有“个人访问令牌”,您需要获取项目ID以使用API​​:

    1. 转到https://gitlab.com/api/v3/projects?private_token=XXXXXXXXXXXXXXXXXXXX(用新令牌替换Xs)
    2. 从json获取项目的id。

      Project id

  3. 现在您可以致电:

    wget -O your_project.tar.gz https://gitlab.com/api/v3/projects/0000000/repository/archive?private_token=XXXXXXXXXXXXXXXXXXXX

  4. 然后将您的项目下载为.tar.gz文件。

答案 1 :(得分:9)

您可以使用您的私人令牌(在"配置文件设置"中找到)来访问任何资源。只需浏览到要下载的存储库文件,即可复制" raw"文件链接并追加?private_token = ...

示例:

curl https://git.local/user1/myrepo/raw/master/myfile.txt?private_token=ahgiretherghaeoi

答案 2 :(得分:4)

您可以,但您需要对自己进行身份验证(如“Gitlab API: How to generate the private token”)

curl http://gitlab.server/api/v3/session --data 'login=myUser&password=myPass'

然后使用private token

curl --header "PRIVATE-TOKEN: QVy1PB7sTxfy4pqfZM1U" "http://example.com/api/v3/projects"

或者,在您的情况下,获取repository files

GET /projects/:id/repository/files

或者,直接下载一个文件。

答案 3 :(得分:2)

假设您有自己的“个人访问令牌”(如其他答案所述),则可以使用curl命令下载存储库分支的归档文件:

curl -k --header "PRIVATE-TOKEN: xxxx" https://gitlab.xxxxx/api/v4/projects/<projectID>/repository/archive?sha=630bc911c1c20283d3980dcb95fd5cb75479bb9c -o myFilename.tar.gz

ProjectID显示在存储库的主页上。 从下拉菜单中选择所需的分支,然后在右侧复制SHA的值,然后可以从webUI获取SHA值。参见下面的截图:

enter image description here

另一种方式是通过wget来实现,

wget --no-check-certificate -O myFilename.zip --header=PRIVATE-TOKEN:xxxx "https://gitlab.xxxx/api/v4/projects/<projectID>/repository/archive.zip?sha=630bc911c1c20283d3980dcb95fd5cb75479bb9c"

我希望能帮上忙。

答案 4 :(得分:1)

如果您需要在CI运行中执行此操作,并且您的私人存储库位于同一服务器上,您应该能够使用git submodules同时克隆其他存储库。自GitLab 8.12起,使用${CI_JOB_TOKEN}another option

相关问题