どういうわけか、許可を台無しにしたか、所有者またはグループを混乱させました。後者はそれぞれユーザーまたはユーザーのグループでなければなりません。
リポジトリでターミナルを開くか、そこに移動します。次に、これらのコマンドを実行します。
sudo chown -R david .git
sudo chgrp -R david .git
これにより、あなたが所有者になり、あなたのグループが.git
フォルダ内のすべてのファイルのグループになります。david
もちろん、ユーザー名がであると仮定します。そうでない場合は、変更します。グループの名前はユーザーと同じです。これをレポ全体に適用する場合は.git
、.
(1つのピリオド)に置き換えてください。
これで問題が解決しない場合は、次の行を実行します。
find .git -type d -exec chmod 755 {} +
find .git -type f -exec chmod 644 {} +
最初の行はすべてのディレクトリに対する完全な許可を与え、2番目の行は.git
フォルダ内のファイルの読み取りと書き込みの許可を与えます。最初の行はエラーを出力する場合があります。これfind
は、アクセス許可が適切に設定されるまでフォルダに移動できないため(完全に間違って設定されている場合)、アクセス許可が不十分であることをもう一度通知します。これが発生した場合は、エラーが出力されなくなるまで最初のコマンドを再度実行します(2番目のコマンドを実行する前に)。もちろん、これを回避するには、最初のコマンドをroot
(sudo find .git -type d -exec chmod 755 {} +
)として実行します。その後、いずれの場合でもエラーなしで最初から実行されます。
2番目のコマンドは、.git
フォルダー内のすべてのファイルを実行不能にします。これは、フックを使用しないという問題ではありません。もしそうなら、おそらく実行したいでしょう
chmod +x .git/hooks/*
その後、フックに実行ビットを戻します。それらを返さないと、フックは実行されなくなります。フックを使用しない場合、これを実行しても害はありません。