以前のプロジェクトでは、「svn up」を実行してテスト サイトを最新の状態に保つ cron ジョブを使用していました。
git を使用する新しいプロジェクトで同じことを再現しようとしています。
*/5 * * * * cd /path/to/project; git checkout .; sudo -u nonrootuser git pull >/dev/null 2>> /path/to/project/cron.log; chgrp web . -R;
最初の git checkout を追加しました。問題を解決できるかどうかを確認しますが、問題は解決しません。問題は次のとおりです。週に1回程度、次のメッセージが表示されます。
error: Your local changes to 'path/to/aFileThatDidntExistLocally.xxx' would be overwritten by merge. Aborting. Please, commit your changes or stash them before you can merge.
しかし、pull コマンドを実行する前は、そのファイルは実際には存在しませんでした。まるで git pull コマンドがファイルを取得してステージングし、アルツハイマー病にかかったように、ファイルが作成されたことを認識できず、ファイルが既に存在するために中止されているかのようです。
ファイルを削除しても再発します。root ユーザーで単純な「git pull」を実行した場合にも発生します。また、それは一種のランダムなようで、過去3週間で約3回発生しました. それ以外の時間は、5 分ごとに cron ジョブが期待どおりに動作します。
再び正しくプルできるようにする唯一の方法は、「git clean -f」を実行することですが、追跡されていないファイルがすべて削除されるため、cron ジョブに配置したいものではありません。
コミット/プッシュが疑われますが、異常は見られません。何が起こっているのでしょうか? また、追跡されていないファイルを毎回すべて削除することなく、テスト サイトを一貫して更新するにはどうすればよいですか?
(編集) ここに私の .gitignore と .git/config ファイルのコピーがあります: http://pastebin.com/SxXbshuN