paint-brush
Cách xóa cam kết từ xa trong Gittừ tác giả@timmouskhelichvili
310,078 lượt đọc
310,078 lượt đọc

Cách xóa cam kết từ xa trong Git

từ tác giả Tim Mouskhelichvili2m2022/05/31
Read on Terminal Reader
Read this story w/o Javascript

dài quá đọc không nổi

Để xóa các xác nhận từ xa, bạn có thể sử dụng lệnh git reset nếu các cam kết của bạn liên tiếp từ trên xuống hoặc một rebase tương tác khác. Sau khi bạn xóa các cam kết cục bộ, hãy đẩy những thay đổi đó vào điều khiển từ xa bằng lệnh git push với tùy chọn bắt buộc.
featured image - Cách xóa cam kết từ xa trong Git
Tim Mouskhelichvili HackerNoon profile picture
0-item
1-item

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 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>

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 git rebase --continue hoặc bắt đầu lại bằng cách 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 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!