Danh sách bài viết trong series Học Git cơ bản: làm chủ quản lý mã nguồn
- Bài 1: Khởi Đầu Với Git – Cài Đặt Và Cấu Hình Cơ Bản
- Bài 2: Khám Phá Kho Lưu Trữ – Tạo Và Khởi Động Repository
- Bài 3: Git Commit Như Siêu Nhân – Lưu Lại Mọi Thay Đổi
- Bài 4: Git history – Xem Lịch Sử Và Undo
- Bài 5: Git branch – Làm Việc Với Branch
- Bài 6: Git Remote – Kết Nối Với GitHub
- Bài 7: Hợp Tác Đỉnh Cao – Resolve Conflict Như Pro
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
commitlà một “chặng đường” bạn đã đi. HEAD -> masterchỉ 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 tragit status. Hủy:git restore hello.txt - Đã add nhưng chưa commit: Hủy từ staging:
git restore --staged hello.txtRồ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 loghoặcgit statustrướ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!




