git checkout - ファイルが既存のファイルに対する権限を変更します。

git checkout - ファイルが既存のファイルに対する権限を変更します。

ファイルを編集した後に変更をキャンセルしたい場合は、次を使用します。

git checkout -- file.txt

問題は、git既存のファイルに対するファイル権限が維持されないことです。file.txt権限がありますが、その後644は(私の考えでは)git checkout600umask

私はgitがファイル権限を保存しないことを知っており、新しいファイルを作成するときに権限を覚えたくありません。

ただし、この場合はファイルが存在します。git権限を変更せずに維持できないのはなぜですか?

この問題はいくつかの醜いハッキング(いくつかのフック)で解決できますか?

ベストアンサー1

Gitがファイルをチェックアウトすると、デフォルトでシステムはファイルのumaskを使用し、ディレクトリまたは実行可能とマークされている場合は実行可能ビットを設定します。これは、Gitがファイルを削除して再生成するため、既存のファイルの権限が維持されないためです。

core.sharedRepositoryチェックアウトしたいファイルの権限を設定するオプションがあるため、これは実際に意図的に設計されています。デフォルトではに設定されており、umaskこれはumaskが使用されることを意味します。リポジトリで別の動作が必要な場合は、異なる設定を行うと0644その値が使用されます。

必要に応じて、post-checkoutフックを使用して権限を再度変更できますが、すべての場合に機能するわけではありません。

おすすめ記事