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 😎.
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 .
Để 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.
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 git reset --hard
với đối tượng HEAD
và số lượng cam kết bạn muốn xóa.
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>
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.
git reflog
.git rebase -i <hash>
.git rebase --continue
hoặc bắt đầu lại bằng cách hủy bỏ rebase .Để 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
.
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 git push
với tùy chọn force
vì bạn có thể mất tiến trình nếu không thận trọng.
Cảm ơn bạn đã đọc!