我需要能够从我的bash脚本中添加git凭据,但无法弄清楚该怎么做。
git clone https://xxxxxxx
将询问我的用户名和密码。
我如何在bash脚本中传递它们?
任何指针将不胜感激
答案 0 :(得分:3)
对于基本的HTTP身份验证,您可以:
在URL中传递凭据:
git clone http://USERNAME:PASSWORD@some_git_server.com/project.git
警告是不安全的:当您使用远程仓库时,使用ps
或top
实用程序的计算机上的其他用户可以看到带有凭据的URL。
$ git config --global credential.helper store
$ git clone http://some_git_server.com/project.git
Username for 'http://some_git_server.com': <USERNAME>
Password for 'https://USERNAME@some_git_server.com': <PASSWORD>
使用~/.netrc
:
cat >>~/.netrc <<EOF
machine some_git_server.com
login <USERNAME>
password <PASSWORD>
EOF
答案 1 :(得分:2)
答案 2 :(得分:2)
您仍然可以将用户名和密码传递到git clone
的URL中:
git clone https://username:password@github.com/username/repository.git
关于使用bash脚本,您可以传递用户名$1
和密码$2
:
git clone https://$1:$2@github.com/username/repository.git
然后使用以下命令调用脚本:
./script.sh username password
另外,将密码保留为仅包含用户名可能更安全:
git clone https://$1@github.com/username/repository.git
因为带有密码的命令将记录在您的bash历史记录中。但是,可以通过在命令前面添加一个空格来避免这种情况。
您也可以使用How do I parse command line arguments in Bash?获得使用命令行参数的更好方法。
还请小心使用URL Encoding作为用户名和密码中的特殊字符。一个很好的例子是使用%20
而不是@
,因为URLS对于标准字符集以外的字符需要使用标准ASCII编码。