如何在git pull命令中输入密码?

25

我已经为Windows和Linux编写了脚本,以在新用户的工作空间中设置所有来自我们服务器的git存储库。

我希望用户只需输入一次我们服务器的密码,将其存储在本地变量中,然后将该变量传递给每个git pull命令,然后清除密码变量并退出。

如何在git pull命令请求密码时输入密码?无论是Windows批处理文件还是Linux Shell脚本。

这是Linux脚本中的代码:

#!/bin/bash

echo "Enter password: "
read pswd
clear #No screen peaking

#This is repeated for each repo
location=folderName
mkdir $location
cd $location
git init
git remote add origin git@<server>:$location.git
git pull origin master 
#Above prompts for password & is where I want to automatically input $pswd

我尝试过 SO 和其他地方推荐的各种方法,比如管道、从 .txt 文件读取等等。我希望不需要使用除了普通的 Windows 命令提示符和 Linux 终端命令之外的任何东西。并且由于这个脚本只是为了设置目的,我不需要像 ssh 代理那样安全地永久存储密码。

我正在运行 Windows 7 和 Ubuntu 12.10,但这个脚本是用来设置新用户的,所以最好能在大多数发行版上运行。

3个回答

51

简介:

git pull "https://<username>:<password>@github.com/<github_account>/<repository_name>.git" <branch_name>

例子:

git pull "https://admin:12345@github.com/Jet/myProject.git" master

注意:这对我在一个Bash脚本上有效。


2
这仅适用于http(s),这在问题中没有指定。目前还没有正确的答案。一个应该但不起作用的例子是 echo $PASSWORD | git pull - TamaMcGlinn
我通常的命令是 git pull origin develop,那么我该如何在这里添加密码? - Kaspar L. Palgi
git fetch origin怎么样? - DJ_Stuffy_K
git fetch "https://<username>:<password>@github.com/<github_account>/<repository_name>.git" <branch_name> 请执行以上命令以从指定的GitHub存储库中获取特定分支的最新代码。 - Waqas

4

6
这甚至没有回答用户的问题,只是推荐使用其他东西。当然,将密码以明文形式保存听起来很糟糕,但任何 DevOps 人员都会告诉你要将密码保存在源代码控制中(除非这不是 DevOps 的任务),因为否则你会忘记它。 - Adam Hess
3
不是这个DevOps人,我们把密码保存在一个密码管理应用程序里。 - JamesQMurphy

4

git 中读取远程的 url,然后插入 ID 和密码 (PW) 到 url 可能会起作用。

例如,尝试以下操作:

cd ${REPOSITORY_DIR}
origin=$(git remote get-url origin)
origin_with_pass=${origin/"//"/"//${USER_ID}:${USER_PW}@"}
git pull ${origin_with_pass} master

有关它如何工作的任何解释吗?(因为对我来说它不起作用,我希望它能够起作用) - J.A.I.L.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接