Khi bạn đẩy tới repo, bạn thực sự không muốn thay đổi lịch sử. Tuy nhiên, nếu bạn hoàn toàn chắc chắn rằng không ai đã lấy/lấy từ repo kể từ lần commit vi phạm của bạn, bạn có 2 tùy chọn.
Nếu bạn muốn xóa hoàn toàn cam kết (và mọi cam kết sau đó), hãy thực hiện git reset --hard ABC~
(giả sử băm của cam kết là ABC
). Sau đó, hãy thực hiện git push -f
.
Nếu bạn chỉ muốn chỉnh sửa cam kết đó và giữ nguyên các cam kết theo sau, hãy thực hiện git rebase -i ABC~
. Thao tác này sẽ khởi chạy trình chỉnh sửa của bạn, hiển thị danh sách các cam kết của bạn, bắt đầu với các cam kết. Thay đổi cờ từ "chọn" thành "e", lưu tệp và đóng trình chỉnh sửa. Sau đó thực hiện các thay đổi cần thiết cho các tệp và thực hiện git commit -a --amend
, sau đó thực hiện git rebase --continue
. Theo dõi tất cả với một số git push -f
.
Tôi muốn lặp lại, các tùy chọn này chỉ khả dụng cho bạn nếu không ai đã thực hiện việc kéo hoặc tìm nạp chứa cam kết vi phạm của bạn. Nếu họ có, thực hiện các bước này sẽ chỉ làm cho vấn đề tồi tệ hơn.
Nguồn
2015-06-17 13:37:23
Vì vậy, đây là một gợi ý chính: Luôn kiểm tra các cam kết của bạn từng người một trước khi đẩy chúng. LUÔN LUÔN. – ckruczek
có thể trùng lặp của [Loại bỏ các tệp nhạy cảm và các cam kết của chúng khỏi lịch sử Git] (http: // stackoverflow.com/questions/872565/remove-sensitive-files-and-their-commits-from-git-history) –