0

そのため、私自身と他の数人の開発者が解決できなかったこの奇妙な 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 それもうまくいきませんでした。ここからどこへ行くべきかわからない。

私を助けてください!!!!ライナスは今、私に残酷ないたずらをしているように感じます。

4

2 に答える 2

1

/home/website/website.git に裸の git リポジトリがありますが、これは /home/website の git リポジトリの中にありますか? そして、裸の git リポジトリをだまして、GIT_WORK_TREE?

gitこの設定を理解する価値はあるかもしれませんが、それは開発者になるつもりがある場合に限られます。あなたは Web サイトの機能を提供することに重点を置いているユーザーなので、標準のgitセットアップを使用することをお勧めします。

ベア git リポジトリを別の場所に移動します。

$ mkdir /home/repo
$ mv /home/website/website.git /home/repo/website.git
$ cd /home/website
$ git remote set-url origin /home/repo/website.git
于 2013-04-20T00:33:21.497 に答える
0

私は解決策を得ました。これです。上記のコマンドを git リポジトリから実行していました。

コマンドは作業ツリーから実行し、次のように変更する必要があることがわかりました。

GIT_WORK_TREE=/home/website/  git --git-dir="./website.git/"  add ./
于 2013-04-29T13:20:08.190 に答える