Git theo dõi quá trình lưu trữ và hiển thị các thay đổi quyền khi tạo các bản vá bằng cách sử dụng git diff -p. Vì vậy, tất cả những gì chúng ta cần là:
- tạo một bản vá ngược
- chỉ bao gồm các thay đổi quyền
- áp dụng các bản vá cho bản sao làm việc của chúng tôi
Như một lớp lót:
git diff -p -R --no-ext-diff --no-color \
| grep -E "^(diff|(old|new) mode)" --color=never \
| git apply
bạn cũng có thể thêm nó dưới dạng bí danh vào cấu hình git của mình ...
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'
... và bạn có thể gọi nó thông qua:
git permission-reset
Lưu ý, nếu bạn shell là bash, hãy đảm bảo sử dụng 'thay vì "dấu ngoặc kép xung quanh !git, nếu không nó sẽ được thay thế bằng gitlệnh cuối cùng bạn đã chạy.
Thx để @Mixologic đã chỉ ra rằng bằng cách đơn giản sử dụng -Rtrên git diff, những rườm rà sedlệnh không còn cần thiết.