当我这样做时:
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.email
并user.name
。您有更多选项可以让 git 获取这些值。显然,从 crontab 调用时,git 不会使用某些配置文件。
我建议您从以下两个选项中进行选择:
1. 使用命令将user.email
和user.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"