SSH プロトコルを利用して git のリモートリポジトリを操作している場合ですが、cron から自動で git push したい時、ssh の秘密鍵を明示的に指定して git push する必要があります。
その実現方法のメモになります。
1)下記のような SSH のラッパースクリプト(git-ssh.sh)を作成します。
#!/bin/sh exec ssh -oIdentityFile=/path/to/.ssh/id_rsa "$@"
2)下記のように GIT_SSH 環境変数に1で作ったスクリプトを指定します。
% export GIT_SSH=/path/to/git-ssh.sh
上記を行うことで、/path/to/.ssh/id_rsa の秘密鍵を利用して git push が実行されます。
具体的な cron は下記のようになります。
1 1 * * * <USER> cd /path/to/projects/proj && git add -A > /dev/null 2>&1 ; git commit -m "自動バックアップ (`date`)" > /dev/null 2>&1 && export GIT_SSH=/path/to/.ssh/git-ssh.sh ; git push