"Undo" một commit trong git tree
Git
63
White

BB viết ngày 27/05/2015

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 đó. Ở đây mình sẽ giới thiệu 3 cách undo cơ bản cho một commit.

Reset

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

Revert

GIt revert có thể tạo một commmit với với nội dung đảo ngược lại một commit cũ. 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

Bạn có thể ghi đè lại commit mới nhất bằng option --amend của git commit

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" một merge 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
Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

BB

4 bài viết.
7 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
55 9
Tôi xin tổng hợp các cách dùng git stash tôi hay sử dụng Lưu lại thay đổi Git stash được sử dụng khi muốn lưu lại các thay đổi chưa commit, thườ...
BB viết hơn 5 năm trước
55 9
White
18 4
Chúng ta hẳn là đều rất hay dùng git add trong khi làm việc. Vậy bạn có để ý sự khác nhau của 3 câu lệnh dưới đây ? bash git add . git add u . ...
BB viết 5 năm trước
18 4
White
15 2
Peco Gần đây lục được (Link) trên Kipalog, thấy hay quá nên thử ứng dụng cho git. Từ trước đến nay trên terminal để xem nội dung một git commit, c...
BB viết hơn 5 năm trước
15 2
Bài viết liên quan
White
4 3
Xin chào mọi người, bài viết hôm nay sẽ liên quan đến một công cụ quản lý source code vô cùng quen thuộc đối với developer hiện nay đó chính là Git...
Julian Dong viết 6 tháng trước
4 3
White
2 0
Hôm nay group review một cái tài liệu về version control với mấy đồng nghiệp, một người bạn bảo: Cái đó có gì đâu mà ông viết có vẻ khó khăn vậy,...
Long Nguyễn Xuân viết gần 2 năm trước
2 0
White
12 0
Làm việc với git submodule (Ảnh) Đôi lúc ta cần phải sử dụng các repo khác như là một module của dự án hiện tại, nhưng ta lại muốn quản lý nó riê...
Tân Nguyễn viết 2 năm trước
12 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
4 bài viết.
7 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!