そのため、私自身と他の数人の開発者が解決できなかったこの奇妙な git の問題に悩まされてきました。ここにあります:
テストサーバーでgitを使用してWebサイトの変更を管理するためのベアレポを作成しました。この例では、リポジトリは次の場所にあります: /home/website/website.git Web サイトのパブリック ルートは次の場所になります: /home/website
次のコマンドを実行してレポを作成しました: git init --bare inside the git repo directory "website.git"
次に、ローカル リポジトリを別のマシンに配置します。これは標準の git リポジトリです。サイトを構築して、展開できるようにします。準備ができたら、ベア リポジトリにプッシュします。私のローカルレポから。最新のファイル ツリーを Web サイトのパブリック ルートにチェックアウトする post-receive フックがあります。そのため、ローカル リポジトリで変更を加えて localhost 環境でテストすると、満足したらライブ サーバーにプッシュできます。
ここに私が直面している問題があります。うまくプッシュできます。問題ない。すべてが期待どおりに機能します。コードはパブリック ルートにチェックアウトされます。誰もが幸せで、自分の人生を続けています。
しかし!!!: このサイトは CMS サイトです。ユーザーはそれにログインしてアップロードします。ファイルは、GIT_WORK_TREE である Web サイトのパブリック ルートに作成されます。
NBDでしょ?!以前と同じように、ライブ ベア リポジトリから時々ファイルをコミットし、ローカル環境に戻すことができます。そこで、サーバーで SSH にログインします。/home/website/website.git に移動し、次のコマンドを実行します: GIT_WORK_TREE=/home/website/ git add ../
私はこの混乱を得る:
error: unable to create temporary sha1 filename ./objects/cb: No such file or directory
error: error_log: failed to insert into database
error: unable to index file error_log
fatal: adding files failed
以前に他のサーバーでこれを行ったことがありますが、覚えている限りではうまくいきました。だから私は WTF のようでした。このサーバーでは何かがおかしいに違いありません。私が持っている別のサーバーに行き、まったく同じ手順を複製しました。まったく同じ問題が発生しました。だから今、私は正気を失っているのではないかと恐れており、おそらくこれらの以前の git の経験はすべて私の頭の中で作り上げられています.... *まあ、まだそこまでは行きません.... :)
誰かがここで私を助けてくれるかもしれません。私はgitをたくさん使ってきましたが、これをクラックすることはできません。
ああ、他に役立つかもしれない仕様: CENTOS 6.2 の実行
すべての権限を再確認しました。どういうわけかそれを失わないようにするためだけに、すべてを再帰的に 777 に変更しようとさえしました。すべてのファイルが正しいユーザーによって所有されていることを確認してください。再帰的に chown します。ここで説明されているこの問題の標準的な解決策も試しました: https://answers.atlassian.com/questions/132671/git-commit-fails-with-sourcetree-error-unable-to-create-temporary-sha1- filename-git-objects-d8-file-exists それもうまくいきませんでした。ここからどこへ行くべきかわからない。
私を助けてください!!!!ライナスは今、私に残酷ないたずらをしているように感じます。