在Git Fetch和缓存中传递凭证



我正在尝试配置一个git客户端,使用git fetch和git checkout从bash脚本中签出。

我有一个github的PAT(个人访问令牌)。

我的目的是使用我的github用户id和PAT传递给git fetch命令一次,这样下一个git命令就不需要了。

我知道在git克隆中,我可以这样传递密码:
git clone https://<token>@github.com/<username>/repository.git

我还设置了凭证。用于凭据缓存的缓存帮助器。

git config --global user.name "git-user-id"
git config --global user.email "email"
git config --global credential.helper cache 

现在我想把用户名和PAT传递给git fetch:

git fetch --no-tags --progress --depth=1 -- https://github.com/RepoName/demo-internal.git +refs/heads/<branch>:refs/remotes/origin/<branch>
git checkout <branch>

如何在git命令行中完成?

Note: I am not looking for an interactive way like using Expect or something like that. 

您不应该在URL中放置凭据。Git FAQ提到了原因:

虽然可以在URL中放置密码(必须是百分比编码),但这不是特别安全,并且可能导致意外暴露凭据,因此不建议这样做。

如果您的目标是为您自己的使用设置访问权限(例如,个人或工作桌面或笔记本电脑),那么FAQ条目告诉您如何设置一个凭据帮助器,它将使用适合您系统的适当加密凭据存储来长期安全地保存您的凭据。

如果您的目标是为某种自动化系统设置凭据,那么您可以设置一个自定义凭据帮助器来从环境中读取。您还可以生成一个Ed25519 SSH部署密钥并使用它。

注意user.name不是用户名;它是一个个人名称,对身份验证没有影响。例如,Git的维护者将这个值设置为"Junio C Hamano"。

最新更新