Thao tác với lịch sử là điều rất phổ biến đối với các nhà phát triển làm việc với Git thường xuyên. Thật vậy, các nhà phát triển thường cần xóa các cam kết khỏi lịch sử Git. May mắn thay, Git cung cấp nhiều lệnh để thực hiện thao tác này. Hãy bắt tay vào thực hiện thôi 😎. Bước 0 - Chuẩn bị Trước khi thao tác lịch sử Git, hãy đảm bảo rằng thư mục làm việc của bạn không có bất kỳ thay đổi nào bằng lệnh . git status Bước 1 - Xóa các cam kết cục bộ Để xóa các cam kết khỏi máy chủ từ xa, trước tiên, bạn cần xóa chúng khỏi lịch sử cục bộ của mình. 1.1 Đối với các lần xác nhận liên tiếp từ đầu Nếu các cam kết bạn muốn xóa được đặt ở đầu lịch sử cam kết của bạn, hãy sử dụng lệnh với đối tượng và số lượng cam kết bạn muốn xóa. git reset --hard HEAD git reset --hard HEAD~1 Lệnh này sẽ xóa . cam kết mới nhất git reset --hard HEAD~3 Lệnh này sẽ loại bỏ . ba lần xác nhận mới nhất Bạn cũng có thể xóa tối đa một cam kết cụ thể bằng cách sử dụng hàm băm của cam kết, như sau: git reset --hard <hash> 1.2 Đối với các cam kết không liên tiếp Tuy nhiên, nếu bạn muốn xóa các cam kết không liên tiếp, bạn sẽ cần sử dụng một rebase tương tác. Tìm hàm băm xác nhận cuối cùng chứa tất cả các xác nhận bạn muốn xóa bằng lệnh . [ ] git reflog Bắt đầu một cuộc rebase tương tác với . [ ] git rebase -i <hash> Trong màn hình chỉnh sửa, tìm dòng cam kết bạn muốn xóa và xóa chúng. [ ] Lưu và thoát (bạn có thể cần giải quyết xung đột) [ ] Kết thúc quá trình rebase tương tác bằng hoặc bắt đầu lại bằng cách . [ ] git rebase --continue hủy bỏ rebase Bước 2 - Xóa các xác nhận từ xa Để xóa các xác nhận khỏi điều khiển từ xa, bạn sẽ cần đẩy các thay đổi cục bộ của mình sang điều khiển từ xa bằng lệnh . git push git push origin HEAD --force Vì lịch sử cục bộ của bạn khác với lịch sử từ xa nên bạn cần sử dụng tùy chọn . force Suy nghĩ cuối cùng Như bạn có thể thấy, Git giúp dễ dàng xóa các cam kết khỏi máy chủ từ xa. Tuy nhiên, bạn cần cẩn thận khi sử dụng lệnh với tùy chọn vì bạn có thể mất tiến trình nếu không thận trọng. git push force Cảm ơn bạn đã đọc!