Skip to Content
🔀 Git & GitHubPreviewGitHoàn tác thay đổi

Hoàn tác thay đổi

Tổng quan

Git cung cấp nhiều cách để hoàn tác thay đổi, tùy thuộc vào thay đổi đang ở đâu:

  • Working Directory (chưa add)
  • Staging Area (đã add, chưa commit)
  • Repository (đã commit)

Hoàn tác ở Working Directory

Hủy thay đổi file (chưa add)

# Hủy thay đổi một file git checkout -- filename.txt # Hoặc (Git 2.23+) git restore filename.txt # Hủy tất cả thay đổi git restore .

Xóa file mới tạo (untracked)

# Xem file sẽ bị xóa git clean -n # Xóa file git clean -f # Xóa cả thư mục git clean -fd

Hoàn tác ở Staging Area

Unstage file (đã add, chưa commit)

# Unstage một file git reset HEAD filename.txt # Hoặc (Git 2.23+) git restore --staged filename.txt # Unstage tất cả git reset HEAD

Hoàn tác Commit

Sửa commit cuối

# Sửa message git commit --amend -m "message mới" # Thêm file vào commit cuối git add forgotten-file.txt git commit --amend --no-edit

Revert - Tạo commit ngược lại

Tạo commit mới hoàn tác commit cũ (an toàn cho public branch):

# Revert commit gần nhất git revert HEAD # Revert commit cụ thể git revert abc123 # Revert nhiều commits git revert HEAD~3..HEAD

Reset - Quay về commit cũ

# Soft: giữ thay đổi trong staging git reset --soft HEAD~1 # Mixed (mặc định): giữ thay đổi trong working directory git reset HEAD~1 # Hard: xóa hoàn toàn thay đổi ⚠️ git reset --hard HEAD~1

⚠️ Cảnh báo: reset --hard sẽ XÓA VĨNH VIỄN các thay đổi. Chỉ dùng khi bạn chắc chắn!

So sánh các lệnh

Tình huốngLệnh
Hủy thay đổi chưa addgit restore file
Unstage file đã addgit restore --staged file
Sửa commit cuốigit commit --amend
Hoàn tác commit (an toàn)git revert
Xóa commit (nguy hiểm)git reset --hard

Khôi phục từ Reflog

Nếu lỡ reset —hard, có thể khôi phục qua reflog:

# Xem lịch sử HEAD git reflog # Khôi phục về commit cũ git reset --hard HEAD@{2}

Stash - Lưu tạm thay đổi

Lưu thay đổi để làm việc khác, sau đó khôi phục:

# Lưu thay đổi git stash # Xem danh sách stash git stash list # Khôi phục stash gần nhất git stash pop # Khôi phục stash cụ thể git stash apply stash@{1} # Xóa stash git stash drop stash@{0}

Tổng kết

Bạn đã học xong các kiến thức Git cơ bản! Hãy tiếp tục với phần GitHub để học cách làm việc với remote repository.

Last updated on