編集権限がないと言うとき、正確にはどういう意味ですか?
注:CHMODの問題を修正した後、これらの端末コマンドを実行しました
つまり、出力が役に立たないということです。これらのすべての権限が表示されます。
kirkstrobeck:atheycreek kirkstrobeck$ ls -lad ~ . .git
drwxrwxrwx 8 kirkstrobeck staff 272 May 24 18:20 .
drwxrwxrwx 16 kirkstrobeck staff 544 May 25 10:58 .git
drwxr-xr-x+ 92 kirkstrobeck staff 3128 May 24 15:17 /Users/kirkstrobeck
リストされているすべての編集権限を持っているということです-chmod -R 777 .
以前にフォルダーで実行したことがある場合に予想されます。
より関連性の高いアクセス許可は、編集しようとしているファイルとフォルダーのアクセス許可です。コマンドの特定の例、それが生成したエラー、および関連ファイルのアクセス許可-特定の答えが得られますが、それがない場合は、知識に基づいた推測作業があります。
書き込み権限は git の問題ではありません
Git はフォルダーをまったく保存せず、ファイルの実行権限のみを保存します。これは、次のような方法で自分自身に示すことができます。
[andy@work:/tmp/so/original]$ git init
[andy@work:/tmp/so/original]$ touch 0700
[andy@work:/tmp/so/original]$ touch 0600
[andy@work:/tmp/so/original]$ touch 0500
[andy@work:/tmp/so/original]$ touch 0400
[andy@work:/tmp/so/original]$ chmod 0700 0700
[andy@work:/tmp/so/original]$ chmod 0600 0600
[andy@work:/tmp/so/original]$ chmod 0500 0500
[andy@work:/tmp/so/original]$ chmod 0400 0400
[andy@work:/tmp/so/original]$ git add *
[andy@work:/tmp/so/original]$ git commit -va
[master (root-commit) a304e1b] adding files with the named permissions
0 files changed
create mode 100644 0400
create mode 100755 0500
create mode 100644 0600
create mode 100755 0700
[andy@work:/tmp/so/original(master)]$ ls -la
total 12
drwxr-xr-x 3 andy users 4096 May 28 14:51 .
drwxr-xr-x 3 andy users 4096 May 28 14:48 ..
-r-------- 1 andy users 0 May 28 14:48 0400
-r-x------ 1 andy users 0 May 28 14:48 0500
-rw------- 1 andy users 0 May 28 14:48 0600
-rwx------ 1 andy users 0 May 28 14:48 0700
drwxr-xr-x 8 andy users 4096 May 28 14:51 .git
上記はls -la
、数値 (ファイル名) と読み取り、書き込み、実行可能権限 (左側) の両方で示されているファイル許可を ( で) 示しています。0500 と 0700 の 2 つのファイルのみが実行権限を持っています。
[andy@work:/tmp/so/checkout]$ git init
Initialized empty Git repository in /tmp/so/checkout/.git/
[andy@work:/tmp/so/checkout]$ git pull ../original/
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From ../original
* branch HEAD -> FETCH_HEAD
[andy@work:/tmp/so/checkout(master)]$ ls -la
total 12
drwxr-xr-x 3 andy users 4096 May 28 14:52 .
drwxr-xr-x 4 andy users 4096 May 28 14:52 ..
-rw-r--r-- 1 andy users 0 May 28 14:52 0400
-rwxr-xr-x 1 andy users 0 May 28 14:52 0500
-rw-r--r-- 1 andy users 0 May 28 14:52 0600
-rwxr-xr-x 1 andy users 0 May 28 14:52 0700
drwxr-xr-x 8 andy users 4096 May 28 14:52 .git
[andy@work:/tmp/so/checkout(master)]$
上記は、umask
実行可能としてコミットされた場合に実行可能であることに加えて、チェックアウトにデフォルトのファイル許可 ( で指定されたもの) があることを示しています。
上記のことを知っていれば、本当の問題がどこにあるのかに焦点を当てるのに役立ちます。
ファイルのパーミッションを修正する
チェックアウトの権限が間違っている場合は、次のようなコマンドで修正できます。
# make sure all files are owned by you
sudo chmod -R andy:users .
# reset to default permissions
sudo find . -type d -exec chmod 0755 {} \; -or -type f -exec chmod 0644 {} \;
エラーメッセージに記載されているファイルを再確認してください。ファイルのパーミッションは 0644 になり、ファイルが入っているフォルダーは 0755 になりました。
ファイルのアクセス許可を修正したら、準備完了です。
コンテンツを見つけて操作できるようにするには、フォルダーに対する実行権限が必要であることに注意してください。フォルダに実行権限がない場合、フォルダ内でほとんど何をしても権限エラーが発生します。しかし、繰り返しになりますが、git はフォルダーをまったく保存しません。それが問題である場合、それは git 関連ではありません。
リポジトリに変更を加えた場合は、次のコマンドでコミットできます。
git commit -am "Resetting file permissions to their default values"
これは、ファイルの実行可能プロパティへの変更をコミットするだけであり、単なるクリーンアップ手順です。リポジトリをチェックアウトしている他の誰かに権限の問題を引き起こす可能性のあるものは何も修正していません。
ファイルのパーミッションを無視する
チェックアウトに適用するアクセス許可をチェックアウトで完全に無視する場合は、次を使用できます。
git config core.fileMode false
このように、git は、チェックアウトに適用するファイル許可の変更をコミットする変更と見なしませんが、利用可能な情報を考えると、それは関連性が低い可能性があります。