ファイルを編集した後に変更をキャンセルしたい場合は、次を使用します。
git checkout -- file.txt
問題は、git
既存のファイルに対するファイル権限が維持されないことです。file.txt
権限がありますが、その後644
は(私の考えでは)git checkout
600
umask
私はgitがファイル権限を保存しないことを知っており、新しいファイルを作成するときに権限を覚えたくありません。
ただし、この場合はファイルが存在します。git
権限を変更せずに維持できないのはなぜですか?
この問題はいくつかの醜いハッキング(いくつかのフック)で解決できますか?
答え1
Gitがファイルをチェックアウトすると、デフォルトでシステムはファイルのumaskを使用し、ディレクトリまたは実行可能とマークされている場合は実行可能ビットを設定します。これは、Gitがファイルを削除して再生成するため、既存のファイルの権限が維持されないためです。
core.sharedRepository
チェックアウトしたいファイルの権限を設定するオプションがあるため、これは実際に意図的に設計されています。デフォルトではに設定されており、umask
これはumaskが使用されることを意味します。リポジトリで別の動作が必要な場合は、異なる設定を行うと0644
その値が使用されます。
必要に応じて、post-checkout
フックを使用して権限を再度変更できますが、すべての場合に機能するわけではありません。