jupp0r đang đi đúng hướng. Trước tiên, cd
vào thư mục gốc của kho lưu trữ của bạn. Sau đó:
git commit -a -m 'Backup commit.'
git branch pre-patch
git reset --hard HEAD~
git diff --patch -w HEAD pre-patch > patch.diff
git apply patch.diff
Tôi không chắc liệu điều này có hiệu quả đối với các thay đổi nhị phân hay không. Nếu không, bạn có thể cam kết riêng trước đó. Nếu quá trình này không thành công, mã của bạn nằm trong chi nhánh pre-patch
.
Điều này không:
- Tạo một cam kết và một chi nhánh để lưu trữ những thay đổi đầy đủ. Điều này cũng phục vụ như một bản sao lưu.
- Quay lại một bước, trước khi thực hiện các thay đổi đó.
- Lấy "diff-w" từ mã cũ sang mã mới, được định dạng dưới dạng bản vá.
- Áp dụng bản vá.
Lưu ý: Nếu bạn đã cam kết thay đổi và muốn sửa đổi, chỉ cần bỏ qua bước đầu tiên.
Có thể sử dụng tập lệnh tương tự như móc trước khi commit mà tôi đã đề cập trong http://stackoverflow.com/a/592014/6309? – VonC
@VonC: Tôi sẽ rất biết ơn nếu bạn có thể làm hài lòng kịch bản đó cho chúng tôi. –
@Abhishek bạn có ý như thế này không? https://github.com/imoldman/config/blob/master/pre-commit.git.sh – VonC