Git melacak filepermission dan mengekspos perubahan izin saat membuat tambalan menggunakan git diff -p. Jadi yang kita butuhkan adalah:
- buat tambalan terbalik
- hanya menyertakan perubahan izin
- terapkan tambalan ke copy pekerjaan kami
Sebagai satu-liner:
git diff -p -R --no-ext-diff --no-color \
| grep -E "^(diff|(old|new) mode)" --color=never \
| git apply
Anda juga dapat menambahkannya sebagai alias ke konfigurasi git Anda ...
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'
... dan Anda dapat memintanya melalui:
git permission-reset
Catatan, jika Anda shell bash, pastikan untuk menggunakan 'alih-alih "tanda kutip di sekitar !git, jika tidak maka akan diganti dengan gitperintah terakhir yang Anda jalankan.
Thx untuk @Mixologic untuk menunjukkan bahwa dengan hanya menggunakan -Rpada git diff, yang rumit sedperintah tidak lagi diperlukan.