git 可以从命令行识别我,但无法从 cron 识别我

git 可以从命令行识别我,但无法从 cron 识别我

当我这样做时:

cd /home/erelsgl/git/erel-sites;  git commit -m "test"

我理解正确:

On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

但是,当我将同一行放入我的帐户的 crontab 中时,我会在日志文件中看到:

*** Please tell me who you are.

Run

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'erelsgl@erelsgl-computer')

我在crontab中输入了“whoami”,得到了与外面相同的答案(“erelsgl”)。

我也尝试将推荐的“git config --global”命令放入 crontab 中(我已经在 crontab 之外成功运行它们)但这没有帮助。

我应该做什么才能从 crontab 提交?

答案1

git 需要在其配置文件之一或环境变量中找到user.emailuser.name。您有更多选项可以让 git 获取这些值。显然,从 crontab 调用时,git 不会使用某些配置文件。

我建议您从以下两个选项中进行选择:

1. 使用命令将user.emailuser.name放入存储库的配置中

git config user.email "[email protected]"
git config user.name "Your Name"

执行此操作时,您应该在存储库中。这样,存储库配置文件.git/config将设置值,并且提交应该可以从 crontab 中工作。您可以使用

cat .git/config

2. 设置环境变量以帮助 git 获取缺失值。在这种情况下,我会运行如下命令

cd /home/erelsgl/git/erel-sites; GIT_COMMITTER_NAME="Your Name" GIT_COMMITTER_EMAIL="[email protected]" git commit -m "test"

我认为变量 GIT_AUTHOR_NAME 和 GIT_AUTHOR_EMAIL 也应该起作用。

我在以下页面上找到了这些信息:

答案2

而不是--global尝试--system

sudo git config --system user.email "[email protected]"
sudo git config --system user.name "Your Name"

相关内容