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 ของคุณ ...
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
หมายเหตุถ้าคุณใช้ shell bashให้ใช้'แทน"เครื่องหมายคำพูดล้อมรอบ!gitมิฉะนั้นจะถูกแทนที่ด้วยgitคำสั่งสุดท้ายที่คุณรัน
thx เพื่อ @Mixologic สำหรับการชี้ให้เห็นว่าโดยเพียงแค่ใช้-Rในgit diffการยุ่งยากsedคำสั่งไม่จำเป็น