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 git
lệ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 -R
trên git diff
, những rườm rà sed
lệnh không còn cần thiết.