带有访问令牌的 git pull,带有用户名/密码的 git push

zwe*_*d40 2 linux git command-line-interface

我在使用 git push 时遇到了问题。这里有很多关于这个问题的线索,但没有一个适合我的问题。

我工作的公司有自己的 gitlab。策略只有 https,不允许 ssh。对于克隆和拉取,需要访问令牌。仅使用用户名/密码推送。不要问我底层原因。不幸的是我不知道。

错误信息是:

$ git push
fatal: unable to access 'https://<username>:<AccessToken>@<domain>/<owner>/<reponame>.git/': The requested URL returned error: 403
Run Code Online (Sandbox Code Playgroud)

至少我已经能够克隆一个 repo,但是我无法分别推送更改的内容。Ubuntu 18.04 正在我的笔记本电脑上运行。我需要做什么来解决我的问题?

tor*_*rek 6

您已经知道每个遥控器都存储一个 URL:origin字面意思 https://<username>:<AccessToken>@<domain>/<owner>/<reponame>.git/.

您不知道的是,每个遥控器实际上都存储了两个URL。一个用于git fetch,第二个用于push。第二个 URL 默认与第一个 URL 相同,但如果您设置它,您可以将其设置为其他任何内容,例如没有访问令牌的 URL。要设置第二个 URL,您可以使用git remote set-url --push

git remote set-url --push origin <url>
Run Code Online (Sandbox Code Playgroud)

如果你像我一样,你可能也想知道git config --edit,这将.git/config在你让 Git 用于其他所有内容的同一个编辑器中打开配置文件(通常只是),在那里你可以直接编辑它。但是git remote该工具是为摆弄附加到每个远程名称的设置而设计的。

  • @evolutionxbox:我不知道为什么 IT 部门会认为这个(“只有访问令牌可以读取,只有用户名+密码 = *不同*并且部分明文访问令牌可以写入”)*有意义*,但是如果需要fetch和push之间不对称,有两个URL。 (2认同)