Mấy hôm nay ngồi đọc tài liệu Git mà cái đầu mình cứ lùng bùng vì cái lệnh `git rebase` này, không tài nào thông nổi. Cứ tưởng nó cũng giống như `merge` bình thường thôi, ai dè lúc đem ra thực hành trên nhánh phụ thì code bay màu sạch sẽ, làm mình đổ mồ hôi hột. Nguy hiểm thật. Thấy anh em trong nghề cứ bảo dùng rebase thì lịch sử commit mới đẹp, gọn gàng dễ nhìn chứ không lằng nhằng như spaghetti. Nhưng khổ nỗi, nghe đồn dùng sai cách là ăn đòn ngay, bay luôn cả code của team chứ chẳng chơi. Bác nào rành vụ này giải thích hộ mình phát, làm sao để xài cái món này cho an toàn nhỉ? Có nguyên tắc vàng nào không hay cứ phải né ra cho lành hả các bác.
Hiểu đúng về Git rebase là gì để quản lý mã nguồn tối ưu thế nào.
Thảo luận (4 bình luận chính)
Vụ này đợt trước mình vừa làm xong, suýt thì bay màu cả cái nhánh production nên rất đồng cảm với pha thót tim của chủ thớt. Bản chất thằng `git rebase` không gộp code kiểu tạo commit mới như `merge` mà nó nhấc nguyên cái đống commit ở nhánh hiện tại của bạn rồi "đóng cọc" lại lên đỉnh của nhánh đích, làm lịch sử git thẳng băng một đường nhưng sơ sẩy conflict phát là dễ ăn hành ngay. Kinh nghiệm xương máu của mình là chỉ rebase khi làm việc trên nhánh local chưa push lên remote, còn code đã share chung với team thì cứ `merge` cho lành, đỡ phải đổ mồ hôi hột.
Bình tĩnh chủ thớt ơi, mất code là do chưa quen tay với lịch sử commit thôi chứ `git rebase` mà dùng đúng cách thì nhánh code đẹp như tranh vẽ, không bị mấy cái nhánh merge rườm rà làm rối mắt. Bí kíp xương máu là chỉ rebase trên nhánh cá nhân của mình trước khi đẩy lên remote, tuyệt đối không đụng vào các nhánh chung như `main` hay `develop` khi chưa nắm chắc tay nghề. Cứ nhớ nguyên tắc "rebase để dọn dẹp lịch sử cục bộ, merge để gộp nhánh chung" là lần sau không sợ bay màu code nữa đâu.
Bình tĩnh đi chủ thớt, lệnh này mà chưa nắm rõ luật chơi thì bay màu code là chuyện cơm bữa, vì cơ bản `rebase` nó viết lại lịch sử commit chứ không tạo merge commit như thông thường. Để dùng an toàn và tối ưu, cứ nhớ quy tắc vàng là **không bao giờ rebase các nhánh đã đẩy lên remote mà người khác đang chung chạ**, chỉ dùng khi làm việc đơn độc trên nhánh tính năng cá nhân. Quy trình chuẩn chỉnh gồm 3 bước: thứ nhất, đứng ở nhánh tính năng rồi chạy `git fetch` và `git rebase origin/main` để cập nhật code mới nhất từ gốc; , nếu có xung đột thì `git add` lại file sửa và gõ tiếp `git rebase --continue`; , khi đã mượt mà thì đẩy lên bằng `git push --force-with-lease` để đồng bộ. Cứ thực hành trên một repo thử nghiệm vài lần cho quen tay là tự khắc thấy nó gọn gàng và không còn đáng sợ nữa.
Đọc bài của chủ thớt mà thấy bóng dáng mình hồi mới học Git, suýt thì bay màu cả cái branch chính chạy production nên hiểu cảm giác đổ mồ hôi hột của bác thế nào. Điểm mấu chốt bạn cần nhớ là `rebase` nó viết lại lịch sử commit bằng cách bứng nguyên đám code của mình cắm lên đầu nhánh khác, chứ không hiền lành tạo commit gộp như `merge` đâu. Lưu ý quan trọng nhất là tuyệt đối không bao giờ dùng `rebase` trên mấy cái nhánh chung mà nhiều người đang cùng đẩy code lên như `main` hay `develop`, trừ khi muốn ăn đòn từ ông team lead. Cứ `git log` với `git status` cẩn thận, thấy rén quá thì cứ `git merge` cho lành, việc gì phải khổ dâm với cái lệnh đấy nếu chưa nắm chắc tay.
Đọc bài của chủ thớt mà thấy bóng dáng mình hồi năm ngoái, cứ tưởng tượng học...
Tại chủ đề: Học văn bằng 2 là gì và điều kiện xét tuyển ra sao.Điểm mấu chốt bạn cần nhớ là đừng vội tin tuyệt đối vào mấy con số hiển thị ...
Tại chủ đề: Xin kinh nghiệm cách kiểm tra cấu hình máy tính chuẩn nhất thế nào.Vụ chứng chỉ tiền gửi (CCTG) này đợt trước mình cũng lăn tăn y chang chủ thớt...
Tại chủ đề: Đầu tư chứng chỉ tiền gửi MB là gì và có an toàn không.Chủ thớt mua xe máy làm ăn thì cứ nhớ nguyên tắc thế này cho nhanh gọn. Thứ n...
Tại chủ đề: Mọi người cho em xin ví dụ cách tính lãi suất vay ngân hàng dễ hiểu với ạĐang nửa đêm buốt lên tận óc thế này thì chủ thớt cứ kiếm củ tỏi đập dập trộn...
Tại chủ đề: Cách giảm đau răng nhanh nhất bằng mẹo dân gian nào ổn.