Bài 4: Git history – Xem Lịch Sử Và Undo

Bước 1: Xem Lịch Sử – “Nhìn Lại Hành Trình”

Bạn đã có repo my-first-repo với vài commit (từ bài 3). Để xem lịch sử, dùng lệnh:

git log

Kết quả sẽ hiện:

commit abc1234 (HEAD -> master)
Author: Your Name <your.email@example.com>
Date:   Thu Oct 10 12:00:00 2023 +0700
    Add superhero message

commit def5678
    Update hello.txt with welcome message

commit ghi9012
    Add hello.txt with greeting message
  • Mỗi dòng commit là một “chặng đường” bạn đã đi.
  • HEAD -> master chỉ commit hiện tại.

Mình từng hoảng khi log dài loằng ngoằng, nhưng chỉ cần cuộn lên là thấy hết! Thử thêm option --oneline để ngắn gọn:

git log --oneline

Kết quả:

abc1234 Add superhero message
def5678 Update hello.txt with welcome message
ghi9012 Add hello.txt with greeting message

Dễ thở hơn nhiều, đúng không?

Bước 2: Quay Lại Quá Khứ – Checkout Một Commit

Muốn xem lại phiên bản cũ? Dùng checkout với mã commit (VD: ghi9012):

git checkout ghi9012

File hello.txt giờ sẽ trở về trạng thái “Hello, Git!”. Kiểm tra nội dung:

cat hello.txt

Nhưng cẩn thận: Bạn đang ở “detached HEAD” – không trên nhánh nào. Để quay lại nhánh hiện tại:

git checkout master

Mình từng quên quay lại, làm commit mới “mất tích” – mất cả buổi tìm cách khôi phục!

Bước 3: Undo Thay Đổi – Cứu Code Khi Sai

Nếu lỡ sửa file mà chưa commit, bạn có thể “hủy”:

  • Chưa add: Đổi hello.txt, kiểm tra git status. Hủy:
    git restore hello.txt
  • Đã add nhưng chưa commit: Hủy từ staging:
    git restore --staged hello.txt

    Rồi hủy nội dung: git restore hello.txt.

Nếu đã commit nhưng muốn sửa, dùng amend:

echo "Oops!" >> hello.txt
git add hello.txt
git commit --amend -m "Add superhero message + Oops fix"

Lệnh này cập nhật commit cuối. Mình từng dùng amend sai, ghi đè nhầm commit – may mà backup kịp!

Bước 4: Reset Nếu Muốn “Xóa Sạch”

Nếu muốn quay về một commit cũ và xóa các commit sau:

git reset --hard def5678

Tất cả thay đổi sau def5678 sẽ biến mất! Dùng --soft nếu chỉ muốn giữ thay đổi trong staging. Mình hay backup code trước khi reset – phòng hờ “lỡ tay”!

Mẹo Nhỏ Để Thành Công

  • Dùng Reflog Nếu Lỡ: Nếu reset sai, xem git reflog để tìm commit cũ.
  • Kiểm Tra Trước: Luôn chạy git log hoặc git status trước khi undo.
  • Backup Quan Trọng: Sao lưu file ngoài Git nếu thử nghiệm lớn.

Thử Ngay

Thêm dòng “Test undo!” vào hello.txt, commit với “Add test message”. Sau đó, dùng git reset --hard để quay về commit trước. Kiểm tra hello.txt và nhắn mình kết quả nếu bạn muốn chia sẻ nhé! Bài sau, ta sẽ khám phá nhánh – “đường cao tốc” của Git – hóng lắm đây!

Điều hướng chuỗi bài viết<< Bài 3: Git Commit Như Siêu Nhân – Lưu Lại Mọi Thay Đổi
>> Bài 5: Git branch – Làm Việc Với Branch
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận