gitlab - 使用 access_token 推送到存储库

gitlab - Push to a repository using access_token

我实施了 oauth2 网络流程,以便从我的应用程序的用户那里获得 access_token。使用 access_token,我想执行以下操作:

  1. 获取用户信息
  2. 为这个用户创建一个 repo
  3. 将代码推送到此 repo(使用 git push )

我已经成功获取用户信息(1)并创建repo(2)

问题是我无法推送代码 (3),出现 "Unauthorized" 错误。

命令我运行:

git remote add origin https://gitlab-ci-token<mytoken>@gitlab.com/myuser/myrepo.git  
git push origin master

你应该做

git remote add origin https://<access-token-name>:<access-token>@gitlab.com/myuser/myrepo.git

请注意,这会将访问令牌作为纯文本存储在 .git\config 文件中。为避免这种情况,您可以使用 git 凭证系统,为“用户名”提供访问令牌名称,为“密码”提供访问令牌。 应该以更安全的方式将凭据存储在git凭据系统中。

Gitlab 目前不支持使用 gitlab-ci-token 推送。有空feature request

也可以不添加新的远程仓库直接推送:

git push https://gitlab-ci-token:<access_token>@gitlab.com/myuser/myrepo.git <branch_name>

如果您想拉取和推送到不同的存储库,这可能会特别方便。