【问题标题】:git commit and push to branch with password using sh filegit commit 并使用 sh 文件使用密码推送到分支
【发布时间】:2022-01-18 14:53:00
【问题描述】:

我正在尝试使用 sh 文件提交我的更改,输入我的 git 凭据,并将更改推送到我正在处理的分支。我无法让凭据部分工作

#!/bin/sh
cd pathtomyrepo
git add *.py
git commit -m "made changes"
git push origin mybranch
mygitusername
echo Press Enter...
mygitpassword
echo Press Enter... 

注意:我必须事先运行 chmod +x pathtomyshscript.sh 才能运行 sh 文件。

我得到的错误是:

错误:将对象添加到存储库数据库 .git/objects 的权限不足 致命:无法写入提交对象

我认为这意味着我的凭据没有传递给 git。 关于如何做的任何建议?有可能吗?

【问题讨论】:

  • 我在这里看到了 2 个主要错误。第一,错误不是来自推送,而是来自较早的本地命令。要找出哪个在运行 sh -x ./pathtomyshscript.sh — shell 会在执行之前回显每个命令。
  • 第二,你不能从你的 shell 传递这样的凭据。当git push 要求提供凭据时,它会卡住,shell 脚本不会继续,您的echo 命令也不会运行。有许多不同的方式可以正确传递凭据——凭据管理器、HTTPS URL 中的登录名/密码、SSH URL 中的 SSH 密钥对。
  • 感谢您的反馈,我修改了代码以解决第一个问题,并将研究您提出的解决方案。

标签: git github commit credentials


【解决方案1】:

注册 SSH 密钥可能会间接解决您的问题。如果您必须在脚本中使用 HTTPS,请使用密码管理器! 强烈不鼓励将您的详细信息复制粘贴到脚本中。

对于 macOS,您可以使用 Keychain 来获取和设置您的 Git 密码:

GIT_PASSWORD=$(security find-generic-password -w -s '<Service Name>' -a '<account>')

现在,我必须警告说,盲目地 add'ing 和 commit'ing 回购是不是好的做法!

相反,您可以查找 git alias 的简写和 this threadgit credentials

【讨论】:

    猜你喜欢
    • 2016-08-01
    • 2019-08-10
    • 2018-07-18
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    相关资源
    最近更新 更多