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
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 tragit 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ặcgit 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!