Hai khái niệm làm nhiều kỹ sư IT đau đầu và khó phân biệt nhất chắc chắn là Git Rebase và Git Merge. Vậy Git Rebase là gì và khi nào nên sử dụng Git Rebase? Tất cả những câu hỏi này sẽ được giải đáp trong bài viết này của Got It Vietnam.
Mục lục
1. Git Rebase là gì?
Hiểu một cách nôm na thì Git Rebase là một chức năng của Git, được sử dụng để nhập một branch đã gần hoàn thiện vào branch gốc (branch master). Rebasing có thể hiểu là quá trình chuyển đổi gốc của 1 branch từ 1 commit này (commit ban đầu) tới một commit khác, việc này trông như thể bạn đã tạo branch của mình từ một commit hoàn toàn khác so với ban đầu. Một điều quan trọng mà các bạn phải nhớ đó là dù branch có thể giống y hệt nhau, nhưng chúng đã được tạo ra bởi các commit hoàn toàn khác nhau.
2. Sử dụng Git Rebase trong trường hợp nào?
Tác dụng chính của chức năng này là lưu giữ lịch sử làm việc của dự án một cách tuyến tính.
Ví dụ, hãy tưởng tưởng rằng bạn đang làm việc trên một branch feature và cùng lúc đó, branch master có nhiều sự phát triển, tahy đổi. Bạn muốn cập nhật branch của mình theo branch master, nhưng không lưu lại các thông tin cập nhật trong branch history. Đây chính là lúc bạn cần sử dụng Git Rebase. Một lịch sử git tuyến tính và ít rẽ nhánh sẽ giúp lập trình viên dễ dàng hơn trong việc truy vết các thay đổi.
3. Ví dụ thực tế
Trong thực tế, cụ thể hơn là trong công việc của các bạn, sẽ có những lúc chúng ta nên cân nhắc sử dụng Git Rebase:
- Một bug được phát hiện trong branch master. Một tính năng, vốn trước đang làm việc hiệu quả thì giờ không hoạt động được. Nhờ các lịch sử chỉnh sửa không bị thay đổi vị trí nên dev có thể xác định lỗi nhanh hơn.
- Một dev sử dụng
git log
kiểm tra lịch sử của branch master. Nhờ lịch sử chỉnh sửa của các nhánh không xê dịch mà dev đã nhanh chóng xác định được lịch sử chỉnh sửa của cả dự án - Trong trường hợp dev không thể xác định bug bằng
git log
, họ có thể tiến hànhgit bisect
. Nếu sử dụng Git Rebase, dev nhiều lựa chọn hơn trong việc xác định bugs. Bởi lịch sử Git không bị chỉnh sửa,git bisect
có rất nhiều các bộ commits để so sánh khi kiểm thử hồi quy. Điều này giúp dev có thể tìm ra commit chứa bugs nhanh hơn và phản hồi kịp thời.
4. Git Rebase tiêu chuẩn và Git Rebase tương tác
Git Rebase tương tác là khi chức năng này chấp nhận đối số -- i
, trong đó chữ I tượng trưng cho “Interactive”. Nếu không có đối số, các lệnh sẽ chạy theo chế độ tiêu chuẩn. Trong cả hai trường hợp, hãy cứ giả sử rằng chúng ta đã tạo những branch tính năng riêng biệt:
Lúc này, Git Rebase tiêu chuẩn sẽ tự động lấy những commit trong branch bạn đang làm việc và để chúng lên đầu của branch đã hoàn thành khi gộp.
Còn đối với Git Rebase tương tác, thay vì cứ tự động di chuyển tất cả các commit tới base mới, nó cho phép các nhà phát triển cơ hội để lựa chọn các commits riêng biệt trong quá trình đó. Điều này giúp các bạn dọn dẹp lịch sử chỉnh sửa gọn gàng hơn bằng cách xoá bỏ, hoặc chia tách và lựa chọn một chuỗi các commits đang tồn tại.
Git Rebase tương tác cho bạn quyền kiểm soát hoàn toàn về lịch sử chỉnh sửa của dự án. Nó cũng cho các dev nhiều sự tự do hơn, giúp họ có thể tuỳ ý để lịch sử chỉnh sửa của mình lộn xộn khi đang trong giai đoạn viết code và quay lại dọn dẹp nó vào lúc sau.
Tại sao nên sử dụng Rebase tương tác?
Đại đa số các dev đều thích sử dụng Rebase kiểu tương tá vì nó cho phép họ có thể “trang trí” nhánh của họ trước khi merge. Điều này có nghĩa là họ có thể xoá những commits không quan trọng hay đã lỗi thời, đồng thời sắp xếp lại lịch sử branch của mình sao cho logic và khoa học nhất có thể.
Sức mạnh thực sự của Rebase tương tác có thể bộc lộ rõ khi xem lại trong lịch sử của những master branch. So sánh với những người khác, bạn sẽ là một dev xuất sắc với số lượng cũng như cách sắp xếp các commits luôn ở mức hoàn hảo.
Hy vọng qua bài viết này, Got It Vietnam đã cung cấp tới bạn đọc những thông tin hữu ích về khái niệm cũng như cách sử dụng của Git Rebase nhé!
Nguồn tham khảo: Atlassian