46
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

gitでpermissionが変わってしまったファイルを元に戻す方法

Last updated at Posted at 2014-06-17

下記を参考にしました。

git でパーミッションだけ変更されてしまったファイルが大量にあるときに元に戻す方法 - bearmini's blog
Git tip: resetting file permissions — Built In Bruges

permissionを元に戻す

下記のコマンドで、テキスト、バイナリファイル共に元に戻る。
あくまでもpermissionだけが変わったファイルが元に戻る。

git diff --numstat | awk '{if (($1 == "0" && $2 == "0") || ($1 == "-" && $2 == "-")) print $3}' | xargs git checkout HEAD

差分のあるファイルも含めてpermissionを元に戻す

変更もあって、permissionも変わったファイルのpermissionだけを元に戻す方法。
下記をaliasとして登録。

git config --global --add alias.permission-reset '!git diff -p | grep -E "^(diff|old mode|new mode)" | sed -e "s/^old/NEW/;s/^new/old/;s/^NEW/new/" | git apply'

これで git permission-reset とすると、permissionだけが元に戻る。これは便利。

permissionの変更を差分としない方法

下記を設定

git config core.filemode false

おまけ(注意)

そもそもなぜ大量のpermission変更が発生したのか。それは、macに刺したUSBメモリがNTFSフォーマットであったことに起因しています。gitの作業ディレクトリをそのUSBにコピーすると、permissionがきれいに777になってしましました。USBメモリは最初にディスクユーティリティでMac OS 拡張 ジャーナリングでフォーマットしましょう。それから作業ディレクトリをコピーしましょう。

46
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?