3 cách undo hoặc loại bỏ commit cơ bản: Reset, Revert và –amend

48719

Bài viết được sự cho phép của tác giả Lê Chí Dũng

Khi bạn vừa thêm một commit vào git tree, và chợt nhận ra commit vừa rồi bị sai, không hoàn chỉnh hoặc có vấn đề, bạn sẽ muốn “undo” commit hoặc loại bỏ nó. Ở đây mình sẽ giới thiệu 3 cách undo commit hoặc loại bỏ commit cơ bản: RESET, REVERT VÀ –amend

Git Reset

git reset là một lệnh mạnh mẽ trong Git cho phép bạn quay lại trạng thái trước đó của project. Git reset được sử dụng để di chuyển HEAD (con trỏ chỉ đến commit hiện tại) đưa nhánh hiện tại về một commit cụ thể trong lịch sử.

Nhảy HEAD về vị trí trước, khi commit sai bằng git reset như sau:

git reset --hard HEAD^
Ở đây có vài điểm cần lưu ý:
  • HEAD^ có ý nghĩa giống với HEAD~ hay @^, nghĩa là quay về trước 1 commit
  • Muốn quay về trước n commit, VD 5 commit thì có thể thay bằng HEAD~5.
git reset --hard|soft HEAD~2 -> Quay về trước 2 commit so với HEAD.
  • --hard có nghĩa là bỏ commit đi và bỏ cả những thay đổi chưa được commit trong working space. Khi này môi trường sẽ hoàn toàn “sạch sẽ” như thời điểm trước khi commit.
  • --soft có nghĩa là bỏ commit đi nhưng giữ nguyên những thay đổi chưa được commit trong working space--soft hữu dụng khi bạn muốn giữ lại những thay đổi chưa commit cho lần commit tiếp theo.

Git Revert

git revert là một lệnh Git được sử dụng để tạo ra một commit mới nhằm đảo ngược thay đổi của commit trước đó. Không giống như git reset, git revert không thay đổi lịch sử Git. Nó tạo ra một commit mới có tác dụng ngược lại so với commit mà bạn muốn loại bỏ, giúp giữ nguyên lịch sử commit một cách rõ ràng và an toàn hơn.

Giả sử commit cũ có hash là (commit_hash) thì câu lệnh sẽ là:

git revert (commit_hash)
Git revert hay được sử dụng để đảo ngược một merge commit. Nếu sau khi git revert bạn lại muốn quay lại trạng thái trước khi đảo ngược thì sao ? Câu trả lời là git revert lại chính revert commit vừa mới tạo.

–amend

git commit --amend là một lệnh hữu ích trong Git giúp bạn sửa đổi commit gần đây nhất. Thay vì tạo một commit mới, --amend cho phép bạn ghi đè lên commit cuối cùng đã thực hiện.

git commit --amend

Lúc này git sẽ cho phép bạn viết lại commit message. Cách này hay dùng khi muốn sửa commit message. Nếu bạn chỉ muốn add thêm file mà không muốn sửa commit message thi có thể dùng option --no-edit

# Đây là commit sai / thiếu git add home.php
git commit -m 'Add home'

# Nhận ra là add thiếu 1 file home.css và muốn thêm vào commit bên trên
git add home.css
git commit --amend --no-edit

Kết luận

3 cách bên trên đây có những trường hợp sử dụng cụ thể khác nhau

  • Muốn bỏ hoàn toàn một commit sai, dùng git reset
  • Muốn undo commit và để lại lịch sử, dùng git revert
  • Muốn thêm những thay đổi nhỏ không đáng kể và tránh bị lắt nhắt, dùng git commit --amend

Nguồn tham khảo: lcdung.top

Có thể bạn quan tâm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev