Gitで「insufficient permission for adding an object」エラーが出た時の解決方法

問題

Gitコマンドを操作していると、以下のようなエラーメッセージが表示されることがあります。

insufficient permission for adding an object to repository database .git/objects

このエラーは、.git/objectsディレクトリに対する書き込み権限が不足している場合に発生します。

原因

このエラーが発生する主な原因は以下の通りです

  • 別のユーザーがリポジトリを作成または操作した
  • sudoコマンドでGit操作を行った後、通常ユーザーで操作しようとした
  • ファイルの所有者やパーミッションが誤って変更された

解決方法

以下の2つのコマンドを実行することで、この問題を解決できます。

1. 所有者を変更する

sudo chown -R your_user_name:your_group_name .git

このコマンドは、.gitディレクトリとその中のすべてのファイル・ディレクトリの所有者を変更します。

2. パーミッションを設定する

sudo chmod -R u+rwX .git

このコマンドは、所有者に対して読み取り、書き込み、実行権限を付与します。

ユーザー名とグループ名の確認方法

上記のコマンドで使用するyour_user_nameyour_group_nameは、以下のコマンドで確認できます。

ls -l .git/objects

このコマンドを実行すると、以下のような出力が表示されます:

drwxr-xr-x 2 username groupname 4096 Oct 29 12:34 pack

この例では、usernameがユーザー名、groupnameがグループ名となります。

実行例

実際の実行例は以下の通りです

# ユーザー名とグループ名を確認
$ ls -l .git/objects
drwxr-xr-x 2 taro staff 4096 Oct 29 12:34 pack

# 所有者を変更
$ sudo chown -R taro:staff .git

# パーミッションを設定
$ sudo chmod -R u+rwX .git

まとめ

Gitで権限エラーが発生した場合は、ファイルの所有者とパーミッションを適切に設定することで解決できます。chownコマンドで所有者を変更し、chmodコマンドで適切な権限を付与することで、再びGitコマンドが正常に動作するようになります。


参考情報:

  • -Rオプション: 再帰的にディレクトリ内のすべてのファイルに適用
  • u+rwXの意味:
    • u: 所有者(user)
    • +: 権限を追加
    • r: 読み取り権限
    • w: 書き込み権限
    • X: ディレクトリまたは既に実行権限があるファイルに実行権限を付与

コメントを残す