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.

Lý thuyết về rebase

1. Rebase là gì?

Rebase là một cách khác để tích hợp các thay đổi giữa các branch. Nếu bạn đã quen với lệnh merge, thì rebase thường được dùng để đạt được những mục đích tương tự, nhưng theo một cách tiếp cận khác.


2. Các biến thể

2.1. Rebase các Branch

Khi bạn muốn kết hợp các thay đổi giữa hai branch, rebase sẽ giúp “chuyển” các commit từ branch hiện tại sang một vị trí mới trên branch khác, như thể các commit đó vừa mới được tạo ra từ branch đích.

Bạn có thể hình dung rebase giống như việc “xếp lại” lịch sử commit: thay vì để các commit nằm ở vị trí cũ, Git sẽ lấy từng commit và đặt chúng lên đỉnh của branch mà bạn chọn. Toàn bộ nội dung thay đổi của commit vẫn giữ nguyên, chỉ có vị trí và liên kết lịch sử của commit là được cập nhật lại.

Lý thuyết của Rebase
Ảnh minh họa: Lý thuyết của Rebase

Giả sử như bạn tạo nhánh mới từ main tại thời điểm commit có hàm f(x), trong khi bạn đang thực hiện tính năng của mình thì main thêm một commit mới để sửa lỗi hàm f(x), và bạn muốn sử dụng phiên bản mới của hàm f(x) đó. Lúc này bạn có thể rebase nhánh của mình lên commit mới nhất của main để đạt mục đích.

2.2. Viết lại lịch sử Commit

Ngoài việc viết lại toàn bộ branch, rebase còn có khả năng thao tác trên từng commit riêng lẻ theo nhiều cách đa dạng như:

  • Chia nhỏ commit (splitting).

  • Xóa commit.

  • Sửa đổi commit (amending).

  • Sắp xếp lại thứ tự commit (reordering).

  • Sửa nội dung message (rewording).

  • Gộp nhiều commit thành một (squashing).

Các tính năng mạnh mẽ này được truy cập thông qua một menu gọi là interactive rebase mà chúng ta sẽ thảo luận ở học phần tiếp theo.


3. Cơ chế hoạt động của Rebase

Theo thiết kế, các Git commit là bất biến (immutable): nghĩa là chúng không thể bị thay đổi dưới bất kỳ hình thức nào sau khi đã được tạo ra. Để rebase có thể sửa đổi lịch sử, nó không thể sửa trực tiếp commit hiện có, nên thay vào đó nó sẽ thay thế chúng.

Đằng sau hậu trường (behind-the-scenes), Git bắt đầu rebase bằng cách:

  1. Đưa các commit cần rebase sang một khu vực chứa tạm.

  2. Tạo bản sao của từng commit một.

  3. Ghi lại chúng vào cây lịch sử với các con trỏ cha mới.

Cơ chế của Rebase
Ảnh minh họa: Cơ chế của Rebase

Mặc dù các bản sao này chứa cùng nội dung thay đổi như commit gốc, nhưng chúng lại có SHA-1 checksums hoàn toàn khác - nghĩa là đối với Git, chúng là những commit mới toanh. Bạn cần chú ý đến đặc điểm này khi repository đã được chia sẻ với các thành viên khác để cùng xây dựng dự án.


4. Khi nào KHÔNG NÊN Rebase

Quy tắc vàng: Tránh rebase các remote branch đang tồn tại ở cả local và remote repository. Nếu các commit đã được đẩy lên server mà lại bị bạn rebase, trong khi người khác đang làm việc trên đó, thì các xung đột merge cực kỳ phức tạp sẽ xảy ra.


Tổng kết

Về bản chất, rebase tạo ra các commit mới thay cho commit cũ để di chuyển các thay đổi lên đầu một nhánh khác, làm cho lịch sử dự án trở nên gọn gàng và dễ hiểu hơn. Tuy nhiên, cần đặc biệt lưu ý không rebase các nhánh đã được chia sẻ chung để tránh gây ra xung đột phức tạp. Những thao tác nâng cao với rebase sẽ được trình bày chi tiết ở phần sau.

Tiếp theo: Thực hiện Rebase