HocTotGit.io

Git nâng cao (Advanced)
  • Lý thuyết về rebase
  • Thực hiện Rebase
  • Giải quyết conflict khi rebase
  • Rebase vs Merge
  • Quiz
  • Rebase interactive
  • Thay đổi commit message
  • Xóa commit
  • Sắp xếp lại commit
  • Squash commit
  • Chia nhỏ commit
  • 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.

Sắp xếp lại commit

1. Tổng quan

Thay đổi thứ tự của các commit có thể tạo ra một lịch sử dễ đọc hơn. Sắp xếp lại cũng hữu ích để sắp xếp các thay đổi liên quan theo trình tự.

Lưu ý:

Reorder không phải là một lệnh Git độc lập, mà là một trong những lệnh có sẵn trong mode interactive rebase khi chạy lệnh git rebase -i. Hãy đảm bảo bạn đã hiểu về interactive rebase trước khi học bài này.


2. Quy trình

2.1. Chọn các commit cần thao tác

Bắt đầu bằng việc nói với Git bạn muốn thao tác trên những commit nào bằng cách chỉ định một chuỗi các commit bắt đầu từ con trỏ HEAD trở về trước:

git rebase -i HEAD~2

Lệnh này sẽ cho phép bạn thao tác trên 2 commit gần nhất.

2.2. Tạo bộ hướng dẫn

Sau khi thực thi lệnh rebase, Git sẽ mở trình soạn thảo văn bản mặc định trong terminal của bạn (thường là Vim) và hiển thị một bộ hướng dẫn mặc định. Các commit từ chuỗi đã chọn được liệt kê ở đầu file này:

pick 7f9d4bf Updated README

pick 3f8e810 Accessibility fix

# Rebase 4095f73..ec48d74 onto 4095f73 (3 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
...

Để sắp xếp lại, chỉ cần thay đổi thứ tự của các commit trong bộ hướng dẫn. Nếu bạn đang sử dụng Vim, nhấn i để vào chế độ insert và thực hiện thay đổi.

Ví dụ, để đổi thứ tự sao cho "Accessibility fix" đứng trước "Updated README":

pick 3f8e810 Accessibility fix

pick 7f9d4bf Updated README
Cảnh báo:

Hãy cẩn thận khi thực hiện bước này. Vô tình xóa một dòng commit sẽ khiến Git xóa commit đó.

2.3. Thực thi bộ hướng dẫn

Sau khi sắp xếp lại xong, bạn cần lưu và đóng file soạn thảo (với Vim: nhấn ESC, sau đó gõ :wq rồi Enter).

Git sẽ sau đó phát lại lịch sử bằng cách đi qua file này từng dòng một, áp dụng các thay đổi theo thứ tự được chỉ định.


3. Lưu ý

  • Khi sử dụng Vim, nhớ rằng bạn cần vào chế độ insert (i) để chỉnh sửa, và thoát chế độ insert (ESC) trước khi lưu (:wq).

  • Bạn có thể sắp xếp lại nhiều commit trong cùng một lần interactive rebase bằng cách di chuyển các dòng commit theo thứ tự mong muốn.

  • Hãy đảm bảo không vô tình xóa bất kỳ dòng commit nào khi sắp xếp lại. Mỗi dòng commit phải được giữ nguyên, chỉ thay đổi vị trí của chúng.

  • Sắp xếp lại commit có thể hữu ích khi bạn muốn nhóm các commit liên quan lại với nhau hoặc tạo ra một lịch sử logic hơn.


Tổng kết

Reorder cho phép bạn thay đổi thứ tự của các commit trong lịch sử dự án. Quy trình bao gồm ba bước: chọn các commit cần thao tác, tạo bộ hướng dẫn bằng cách sắp xếp lại thứ tự các dòng commit, và thực thi bộ hướng dẫn để Git phát lại lịch sử theo thứ tự mới.

Hãy nhớ rằng reorder chỉ nên được sử dụng trên các commit local chưa được chia sẻ để tránh gây xung đột cho các thành viên khác trong team. Hãy cẩn thận không vô tình xóa các dòng commit khi sắp xếp lại.

Tiếp theo: Squash commit