この問題は奇妙になっています。
私の元の投稿は続きますが、ここに私が発見した新しいものがあります:
私は実行しました
git Push
そしてそれは私にいつものエラーを与えました:
Counting objects: 9, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 588 bytes, done.
Total 5 (delta 4), reused 0 (delta 0)
remote: error: unable to create temporary file: No such file or directory
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To USER@REMOTE:/git/PROJECT.git
! [remote rejected] master -> master (unpacker error)
error: failed to Push some refs to 'USER@REMOTE:/git/PROJECT.git'
そのため、楽観的になりすぎて、「-verbose」オプションを使用すると詳細がわかると思ったので、すぐに再試行しました。
git Push --verbose
今回はうまくいきました:
Pushing to USER@REMOTE:/git/PROJECT.git
Counting objects: 9, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 588 bytes, done.
Total 5 (delta 4), reused 0 (delta 0)
To USER@REMOTE:/git/PROJECT.git
87d6996..1cae8b3 master -> master
updating local tracking ref 'refs/remotes/Origin/master'
だから、完全にフレーク状です。私はgitがLDAPを好きではないのではないかと疑い始めています。
元の投稿:
私たちはcvsからgitに移行しています。LDAPでユーザーを認証するgitサーバーがあり、それをREMOTEと呼び、次に自分のマシンをLOCALと呼びます。どちらのマシンもMacです。会社のすべての従業員(私を含む)は、賢くGROUPと呼ぶグループのメンバーです。
私はsshでリモートにアクセスし、cvs2gitを使用して/git/PROJECT.gitという名前のフォルダーにgitリポジトリを作成しました。
次に、ローカルに戻って、私はしました:
git clone USER@REMOTE:/git/PROJECT.git
大丈夫だった。 Mac(「ローカル」)で、いくつかのファイルを編集し、いくつかを削除して、
git -a FILES
git rm FILES
git commit -m 'COMMENT'
そして人生は良かった。
それから(まだローカルのまま)私は実行しました:
git Push
変更をローカルからリモートにプッシュしてこれを取得するには:
Counting objects: 19, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (10/10), 1.46 KiB, done.
Total 10 (delta 8), reused 0 (delta 0)
remote: error: unable to create temporary file: No such file or directory
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To [email protected]:/git/PROJECT.git
! [remote rejected] master -> master (unpacker error)
error: failed to Push some refs to '[email protected]:/git/PROJECT.git'
私はこの問題を調査し、$ TMPDIRが間違っている可能性があるように思えたので、REMOTEにsshして、/ git/tmpという名前のディレクトリを作成し、書き込み権限があることを確認し、.bashrcを編集して$を設定しましたTMPDIRを/ git/tmpに。
実行すると、ローカルに戻ります
ssh USER@REMOTE echo \$TMPDIR
私は正しく応答を見ます
/git/tmp
REMOTEにsshしてファイルのアクセス許可を確認すると、次のようになります。
ls -l /git
drwxrwxrwx USER GROUP tmp
drwxrwsr-x USER GROUP PROJECT.git
ls -l /git/PROJECT.git
すべてのファイルは、所有者(me)とグループのrwです。
このエラーの原因は他に何ですか?
pS Macの標準と同じように、私が実行すると:
ssh ADMIN@REMOTE
cd /
ls -l
シンボリックリンクが表示されます:tmp->/private/tmp、var->/private/varなど->/private/etc。権限と所有権を調整して、次のように設定しました。
lrwxr-xr-x USER GROUP etc -> /private/etc
lrwxr-xr-x USER GROUP tmp -> /private/tmp
lrwxr-xr-x USER GROUP var -> /private/var
実際のフォルダのアクセス許可も更新したので、実行すると:
cd /private
ls -al
そうですか:
drwxr-xr-x USER GROUP etc
drwxrwxrwt USER GROUP tmp
drwxr-xr-x USER GROUP var
そして最後に、私が:
cd /private/var
ls -al
そうですか:
drwxrwxrwt USER GROUP tmp
最初に、最初の試行で「エラー:一時ファイルを作成できません:そのようなファイルまたはディレクトリはありません」が表示される理由を確認します。最初の$ TMPDIRは何でしたか?/tmpまたは/ var/tmpとは異なりましたか?これら2つのディレクトリの権限を確認できますか?詳細を確認するために、gitのコマンドに「-v」を追加することを検討しましたか?本当に別のTMPDIRを使用したい場合は、この変数を.profileなどの他の「ドットファイル」に追加することを検討してください。
ファイルの追加中に、次のエラーも発生しました:error: unable to create temporary file: Not a directory.
。 (git add filename.ext
)
.git
フォルダをチェックインしたところ、不審なファイルe4
が見つかりました(破損している可能性があります)。 e4
はディレクトリである必要がありますが、そうではありませんでした。そのため、.git/objects/
からファイル(私の場合はe4)を削除しました
rm -rf .git/objects/e4
その後、エラーは再び発生しませんでした。