+9

Một bài viết dễ hiểu về "git rebase". Lợi ích của git rebase so với khi dùng git merge

Mở bài

Khi làm việc với Git, sẽ có lúc chúng ta cần kết hợp các commit từ branch này và một branch khác (nội dung bên dưới sẽ có ví dụ minh họa cụ thể)

Điều này có thể được thực hiện bằng cách sử dụng lệnh git merge hoặc git rebase.

Trong bài viết này, chúng ta sẽ tập trung vào git rebase, cách hoạt động của nó như thế nào mà lại có thể giúp chúng ta đơn giản hóa lịch sử commit của git.

git rebase là gì?

Rebase có thể được hiểu là "di chuyển phần base của một branch sang một vị trí khác"

Giả sử, dự án của bạn vừa release một bản production.

Trong lúc tiếp tục code tính năng mới trên branch có tên là new_feature, thì phát hiện có bug trong bản release (main branch).

Để khắc phục, bạn tạo một branch khác có tên quick_fix, sau đó thực hiện fix bugmerge vào main branch.

Tuy nhiên lúc này mainnew_feature đã phân tách và có lịch sử commit khác nhau như hình dưới đây:

image.png

Nếu muốn cập nhật các thay đổi từ main vào new_feature, nhiều bạn sẽ lựa chọn sử dụng git merge.

Nhưng ngoài ra, còn một giải pháp khác đó là sử dụng git rebase. Với git rebase, chúng ta có thể giữ lịch sử commit rõ ràng và dễ theo dõi.

Bằng cách rebasing new_feature vào main, bạn đã chuyển tất cả các commit được thực hiện từ new_feature về phía sau của main branch như hình dưới đây:

image.png

Lợi ích của git rebase so với khi dùng git merge

Có thể thấy, base mới của branch new_feature đã được cập nhật thành main branch mới nhất, mà trong đó bao gồm cả những thay đổi từ việc fix bug (quick_fix branch)

Một trong những lợi ích chính của việc sử dụng git rebase đó là nó sẽ không sinh ra các merge commit không cần thiết như khi chúng ta sử dụng git merge.

Quan trọng nhất, lịch sử commitmain branch vẫn tuyến tính, giúp chúng ta kiểm tra lại các thay đổi dễ dàng hơn trong log hoặc graph.

image.png

Lưu ý khi sử dụng git rebase

git rebase có thể rất hữu ích, nhưng nó cũng đi kèm một số rủi ro mà chúng ta cần phải lưu ý.

Lưu ý số 1: Chỉ dùng trên local repository.

Một khi commit đã được push lên remote repository, thì đừng rebase nó.

git rebase sẽ thay đổi lịch sử commit, nên chúng ta cũng sẽ phải giải quyết nhiều conflict hơn. Bạn có thể sẽ phải xử lý lại những conflict đã được giải quyết ở những lần merge trước đó.

Để giảm số lượng merge conflict, bạn cần nhớ thực hiện rebase thường xuyên.

Lưu ý số 2: Không rebase trên branch dùng chung (ví dụ branch develop, main)

git rebase sẽ thay đổi lịch sử commit, nên nếu người khác bắt đầu pull code từ nhánh dùng chung về và thêm những commit khác, lịch sử commit sẽ không thể đồng bộ được nữa.

Vì vậy luôn nhớ QUY TẮC VÀNG, chỉ sử dụng git rebase trên một local branch mà bạn đang thực hiện riêng lẻ một mình.

Kết bài

git rebase là công cụ rất hữu ích khi dự án làm việc với nhiều người và nhiều branch, nếu được sử dụng đúng cách, nó sẽ giúp anh em có thể có được một lịch sử commit rất rõ ràng.

Tuy nhiên, điều quan trọng là phải hiểu cách thức hoạt độngnhững rủi ro đi kèm của nó.

Follow mình để cập nhật những thông tin thú vị về Lập trình nhé:

Facebook: Tờ Mờ Sáng học Lập trình

Youtube: Tờ Mờ Sáng học Lập trình

TikTok: Tờ Mờ Sáng học Lập trình

TikTok: CLB Lập trình - THPT Ngọc Tảo

Tài liệu tham khảo

Khóa học "Learn Git & GitHub" trên codecademy: https://www.codecademy.com/enrolled/courses/learn-git


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí