HocTotGit.io

Git cơ bản (Fundamentals)
  • Version Control là gì?
  • Git là gì?
  • Cài đặt và cấu hình Git
  • Quiz
  • Thuật ngữ cốt lõi
  • Tạo repository
  • Theo dõi file
  • Quy trình commit
  • Quiz
  • Kiểm tra log
  • Hủy thay đổi
  • Cập nhật commit
  • Quiz
  • Lý thuyết về nhánh
  • Tạo và chuyển nhánh
  • Merge nhánh
  • Giải quyết merge conflict
  • Quiz
Liên kết
Blog
Hỗ trợ

Email: work.lamsun@gmail.com

Yêu thích nền tảng

Hãy chia sẻ ý kiến của bạn

HocTotGit.io

© 2026 HocTotGit.

Cập nhật commit

Đôi khi chúng ta mắc sai lầm khi commit công việc của mình, có thể là viết sai chính tả trong commit message, quên đưa một file nào đó vào commit. Thỉnh thoảng, việc hủy một commit cũng là một việc làm cần thiết nếu commit đó làm hỏng tính năng đang hoạt động tốt.

Hãy cùng tìm hiểu cách Git giúp ta sửa những sai lầm đó!


1. Cập nhật commit message

Nếu bạn gõ sai lỗi chính tả trong commit message, hoặc muốn cập nhật vì lý do nào đó, hãy truyền cờ --amend vào lệnh git commit để thực hiện thay đổi:

git commit --amend -m 'New commit message'

Lưu ý: Lệnh này có tác dụng chỉnh sửa commit message của commit gần nhất, bài học ở chương sau sẽ hướng dẫn nếu muốn chỉnh sửa ở commit cụ thể.


2. Amend một Commit

Amend có nghĩa là sửa lại, bổ sung, điều chỉnh. Nếu bạn quên đưa một số file thay đổi nào đó vào commit gần nhất, việc amend cho phép bạn thêm chúng vào mà không cần tạo ra một commit mới.

# Stage các thay đổi bạn muốn thêm vào commit cuối cùng
git add <file(s)>

# Amend commit gần nhất với các thay đổi này
git commit --amend --no-edit
Lưu ý quan trọng!
Hãy cẩn trọng khi cập nhật các commit, và chỉ nên amend các thay đổi ở local. Việc cập nhật commit message và sửa đổi commit có thể gây ra các vấn đề đồng bộ hóa nếu các thành viên khác đã dựa công việc của họ trên commit mà bạn vừa sửa đổi.

3. Lệnh Reset

Lệnh reset cho phép bạn hủy commit gần nhất của mình. Các thay đổi file chứa trong commit đó sẽ được di chuyển trở lại working directory, và bản thân commit đó sẽ bị xóa khỏi commit tree.

Để sử dụng lệnh này, bạn phải bảo cho Git biết commit nào sẽ trở thành HEAD commit mới.

3.1. Hoàn tác commit gần nhất:

HEAD~1 tham chiếu đến commit nằm ngay trước HEAD commit. HEAD tham chiếu đến commit gần đây nhất trên branch hiện tại, HEAD~1 về cơ bản có nghĩa là "HEAD trừ đi 1".

Để hủy các thay đổi trong commit gần nhất, và xóa commit đó khỏi commit tree, hãy chạy:

git reset HEAD~1

3.2. Các chế độ Reset: Soft, Mixed và Hard

Lệnh git reset không chỉ đơn thuần là hủy commit, nó còn cho phép bạn quyết định "số phận" của các thay đổi (code) sau khi commit bị hủy. Có 3 flag để điều khiển điều này:

  1. --soft :Lệnh này giữ nguyên các thay đổi của bạn trong Staging Area.
  • Trạng thái file: Staged (sẵn sàng để commit lại ngay).

  • Khi nào dùng: Khi bạn muốn gộp các commit lại hoặc chỉ muốn sửa lại commit vừa xong mà không làm mất công git add lại từ đầu.

  • Lệnh: git reset --soft HEAD~1

Git reset --soft
Ảnh minh họa: Git reset --soft
  1. --mixed (mặc định): Đây là chế độ mặc định nếu không viết thêm cờ nào (như ví dụ git reset HEAD~1 ở trên). Lệnh này đưa các thay đổi ra khỏi Staging Area về Working Directory.
  • Trạng thái file: Modified nhưng Unstaged (chưa được add).

  • Khi nào dùng: Khi bạn muốn giữ lại code nhưng muốn xem xét lại, hoặc muốn chia nhỏ một commit lớn thành nhiều commit nhỏ hơn.

  • Lệnh: git reset --mixed HEAD~1 (hoặc git reset HEAD~1)

Git reset --mixed
Ảnh minh họa: Git reset --mixed
  1. --hard: Lệnh này xóa sạch tất cả các thay đổi trong cả Staging Area và Working Directory.
  • Trạng thái file: Mọi thay đổi biến mất hoàn toàn, file trở về y hệt trạng thái của commit trước đó.

  • Khi nào dùng: Khi bạn muốn vứt bỏ hoàn toàn công việc của commit gần nhất và làm lại từ đầu. Lưu ý: Hãy cực kỳ cẩn thận! Bạn sẽ không thể khôi phục lại các thay đổi chưa commit khi dùng lệnh này.

  • Lệnh: git reset --hard HEAD~1

Git reset --hard
Ảnh minh họa: Git reset --hard

Tổng kết

Bạn đã biết cách cập nhật commit message với lệnh git commit --amend và hủy commit với lệnh git reset với 3 chế độ khác nhau. Hãy làm bài quiz để xem bạn đã nắm kĩ module này chưa nhé!

Tiếp theo: Quiz