自动化Git pull的Bash脚本

6
我希望能够自动从Git拉取数据。由于某些原因,我无法在我使用的服务器上自动化密码设置。因此,需要通过一个Bash文件来完成这个任务。但我的Bash编程不是很好。然后可以输入SSH密钥的口令。但我真的不知道该怎么做...
以下是代码: #!/bin/bash cd . public_html/auto_deploy/foldername && git fetch --all && git checkout --force "origin/master" 以上代码无法正常工作... 然后需要输入口令,我不知道该怎么办... 请问应该怎样做?

4
请定义“not working”,并打印到终端以查看哪一位出现了错误? - ggdx
它没有提示任何内容,我期望输入我的密码,这样bash脚本就可以输入密钥短语。 - Robert Dam
1
如果您要将密码嵌入脚本中,为什么不简单地请求git保留凭据并输入一次?在Google上搜索“git credential.helper”。 - Lasse V. Karlsen
3个回答

11

幸运的是,根据核心Git文档的说明,您可以使用以下命令保存您的凭据以供后续使用,而不是每次提示时都需要输入。

git config credential.helper store

使用此辅助程序会在磁盘上以明文形式存储您的密码,仅受文件系统权限保护。此命令会无限期地在磁盘上存储凭据,供未来 Git 程序使用。

您可能不想直接调用此命令;它是由 Git 的其他部分作为凭据辅助程序使用的。

有趣的检查: Git 凭证


用这个解决方案,问题已经得到解决,我成功地使用上述代码使它工作了。 - Robert Dam

3
如果你想从shell脚本执行Git pull命令,需要按照以下方式使用它:
git pull https://username:password@git_hostname.com/my/repository

1
这仅适用于开源存储库,此存储库是私有的,需要通过 git@ url ssh 拉取。 - Robert Dam
我仍然需要先更改目录。 - Robert Dam
你认为这个可以用个人访问令牌吗? - luciano.bustos

3
您可以使用ssh-keygen生成SSH密钥,并使用ssh://方法来git pull
SSH密钥允许您建立安全连接。
在生成SSH密钥之前,请通过运行cat ~/.ssh/id_rsa.pub来检查系统是否已有SSH密钥。如果您看到以ssh-rsassh-dsa开头的一长串字符,则可以跳过ssh-keygen步骤。
要生成新的SSH密钥,只需打开终端并使用以下代码。 ssh-keygen命令提示您输入存储密钥对的位置和文件名以及密码。当提示输入位置和文件名时,您可以按回车键使用默认值。使用密码是SSH密钥的最佳实践,但不是必需的,您可以按回车键跳过创建密码。请注意,您在此处选择的密码无法更改或检索。
ssh-keygen -t rsa -C "$your_email"

使用以下代码显示您的公钥。

cat ~/.ssh/id_rsa.pub

将密钥复制粘贴到您的用户配置文件中。请复制完整的密钥,从ssh-开头,以您的用户名和主机结尾。


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