چگونه سطح دسترسی فایل‌ها را به کمک گیت به حالت اولیه برگردانیم

اگه اشتباهی یا خواسته سطح دسترسی فایل‌های پروژه خودتون رو تغییر داده باشید و پشیمون شده باشید، چجوری این اشتباه خودتون رو جبران می‌کنید؟ راه حل خودمونی اینه که خودمون دستی سطح‌دسترسی هارو برگردونیم ولی اگه این وسط فایل‌هایی وجود داشتند که نیازمند دسترسی خاصی بودند و ما یادمون نبود یا حواسمون نبود، بووووم. اگه کد پروژتون رو با گیت مدیریت می‌کنید راه حل ساده است،‌ فقط کافیه از گیت بپرسید که کدوم فایل‌ها تغییر کردند، فایل‌هایی که سطح دسترسی اونها تغییر کرده رو پیدا کنید و برگردونید به حالت اصلی.
میشه تنها با یک خط دستور تو ترمینال این کار رو انجام داد. چجوری؟

اینجوری:

1
2
3
git diff -p -R --no-color \
| grep -E "^(diff|(old|new) mode)" --color=never \
| git apply

بازم ساده‌تر می‌خواید؟
میشه برای این کد یک کلید میانبر توی گیت درست کرد و از اون استفاده کرد.

1
git config --global --add alias.permission-reset '!git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply'

و اینجوری استفاده کرد ازش

1
git permission-reset

به همین راحتی

References: