[解決済み] git 内のファイルやディレクトリが変更された場合、そのパーミッションを元に戻すには?
2022-03-17 15:19:11
質問
gitでチェックアウトしています。すべてのファイルのパーミッションが、gitが考えるパーミッションと異なっているため、すべて変更されたものとして表示されています。
ファイルの中身に手をつけずに(パーミッションを変更したいだけです)、すべてのファイルのパーミッションをgitが考えるように設定するにはどうしたらよいでしょうか。
解決方法は?
Git は filepermission を追跡し、パッチを作成する際にパーミッションの変更を公開するために
git diff -p
. だから、必要なのは
- リバースパッチを作成する
- パーミッションの変更のみを含める
- パッチを作業コピーに適用する
ワンライナーとして
git diff -p -R --no-ext-diff --no-color \
| grep -E "^(diff|(old|new) mode)" --color=never \
| git apply
また、git config にエイリアスとして追加することもできます...
git config --global --add alias.permission-reset '!git diff -p -R --no-ext-diff --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply'
...で呼び出すことができます。
git permission-reset
注意:シェルが
bash
を使用するようにしてください。
'
の代わりに
"
をクウォートで囲みます。
!git
に置き換えられ、そうでない場合は最後の
git
コマンドを実行しました。
を使うだけでいいということを指摘してくれた @Mixologic に感謝します。
-R
で
git diff
は、面倒な
sed
コマンドはもう必要ありません。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] ステージングされた変更を表示するにはどうしたらいいですか?
-
[解決済み] 2つのリビジョン間でどのファイルが変更されたかを表示する
-
[解決済み] ローカルにあるファイルを無視するようにgitを設定するにはどうすればよいですか?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】Gitバージョン管理でファイルの変更履歴を見る
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】git revert <hash> not allowed due to a merge but no -m option was given.
-
[解決済み】Gitのエラー。リモートリポジトリへの接続時に「Host Key Verification Failed」。
-
[解決済み】git-mergeの-dry-runオプションはありますか?
-
git commits with an error: 更新が拒否されました。現在のブランチの先端が、このブランチより後ろにあるためです。
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み] fatal: EOF が早い fatal: インデックスパックが失敗した
-
[解決済み] git status に fatal: bad object HEAD と表示される。
-
[解決済み] git ls-remote と git ls-remote origin の違い。
-
[解決済み] git リモートリポジトリには、ローカルブランチにマージされていないコミットが含まれています。
-
[解決済み] Git のステージされていない変更から "old mode 100755 new mode 100644" というファイルを削除するにはどうすればよいですか?