【问题标题】:Bash script to automate Git pull用于自动化 Git 拉取的 Bash 脚本
【发布时间】:2018-04-30 13:49:19
【问题描述】:

我想自动从 Git 中提取。由于某些原因,无法在我正在使用的服务器中自动设置密码。所以它需要通过一个 Bash 文件来完成。现在我的 Bash 编码不是那么好。然后可以输入 SSH 密钥的密码。但我真的不知道该怎么办......

#!/bin/bash cd . public_html/auto_deploy/foldername && git fetch --all && git checkout --force "origin/master"

上面的不行...然后它需要输入密码,我不知道该怎么办...我该怎么做?

【问题讨论】:

  • 定义“不工作”,你能打印到标准输出看看哪个位失败了吗?
  • 没有提示,我希望输入密码,所以bash脚本可以输入密码
  • 如果您要将密码嵌入到脚本中,为什么不简单地让 git 保存凭据并输入一次呢?谷歌git credential.helper

标签: git bash git-bash


【解决方案1】:

幸运的是,根据核心 Git documentation,您可以使用以下命令保存您的凭据以供以后使用 - 而不是每次出现提示时都输入它。

git config credential.helper store

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

您可能不想直接调用此命令;意思是 被 git 的其他部分用作凭证助手

有兴趣查看:Git Credentials

【讨论】:

  • 有了这个解决方案就解决了,我设法让它与上面的代码一起工作。
【解决方案2】:

如果你想从 shell 脚本中提取 Git,你需要像这样使用它:

git pull https://username:password@git_hostname.com/my/repository

【讨论】:

  • 这个只针对开放的仓库,这个仓库是私有的,需要通过git@url ssh拉取
  • 而且我还是要先换个目录。
  • 你认为这与个人访问令牌一起工作吗??
【解决方案3】:

您还可以使用ssh-keygen 生成ssh 密钥,并使用ssh:// 方法对git pull

SSH 密钥允许您建立安全连接。

在生成 SSH 密钥之前,通过运行 cat ~/.ssh/id_rsa.pub 检查您的系统是否已经拥有一个。如果您看到以ssh-rsassh-dsa 开头的长字符串,您可以跳过ssh-keygen 步骤。

要生成新的 SSH 密钥,只需打开终端并使用以下代码。 ssh-keygen 命令提示您输入存储密钥对的位置和文件名以及密码。当提示输入位置和文件名时,您可以按 Enter 键使用默认值。最佳做法是为 SSH 密钥使用密码,但这不是必需的,您可以通过按 Enter 跳过创建密码。请注意,您在此处选择的密码无法更改或找回。

ssh-keygen -t rsa -C "$your_email"

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

cat ~/.ssh/id_rsa.pub

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 2018-03-22
    • 2020-07-10
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多