0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Hướng Dẫn Chi Tiết Quy Trình Làm Việc Với Git Rebase: Kinh Nghiệm Thực Tế

Đăng vào 4 tuần trước

• 3 phút đọc

Hướng Dẫn Quy Trình Làm Việc Với Git Rebase

Chào các bạn,

Có lẽ đã có rất nhiều bài viết phân tích và hướng dẫn về các phương thức hợp nhất nhánh trong Git workflow, chủ yếu là hai phương thức chính: MergeRebase. Trong bài viết này, mình muốn chia sẻ những kinh nghiệm thực tế mà mình đã tích lũy được khi làm việc với phương thức Rebase, với mong muốn giúp các bạn có cái nhìn rõ hơn và cách áp dụng hiệu quả trong công việc hàng ngày.

Tìm hiểu về Rebasing

Rebase là một công cụ mạnh mẽ trong Git, cho phép người dùng viết lại lịch sử commit để giữ cho cây Git trở nên gọn gàng và dễ theo dõi hơn. Việc tái cấu trúc lịch sử này có thể mang lại nhiều lợi ích cũng như những rủi ro nhất định. Do đó, việc nắm rõ quy trình làm việc với Rebase là cực kỳ quan trọng.

1. Dọn dẹp Local

Trong quá trình phát triển một tính năng trên nhánh riêng, có thể bạn sẽ tạo ra nhiều commit. Để giữ cho lịch sử commit sạch sẽ và dễ dàng theo dõi, bạn nên thực hiện squash commit. Đây là cách gộp nhiều commit thành một để giảm độ phức tạp.

Cách thực hiện:

Giả sử bạn có 3 commit liên tiếp và muốn gộp thành một,

bash Copy
git switch feature
git rebase -i HEAD~3

Khi đó, một cửa sổ editor sẽ hiển thị lịch sử commit. Bạn có thể sử dụng các lệnh sau:

  • p: pick - giữ lại commit
  • r: reword - giữ lại commit và sửa message
  • s: squash - bỏ qua commit nhưng gộp log vào commit trước
  • f: fixup - bỏ qua commit và xóa log completely

Chọn commit đầu tiên và thay thế các pick của những commit sau bằng squash. Sau khi chỉnh sửa, lưu lại và thoát.

2. Rebasing so với nhánh chính

Sau khi đã gộp các commit của mình, bước tiếp theo là tiến hành rebase với commit trên nhánh chính (main).

Cách thực hiện:

  1. Chuyển sang nhánh chính và cập nhật:
    bash Copy
    git switch main

git pull origin main

Copy
2. Quay lại nhánh tính năng:
   ```bash
git switch feature
git rebase -i main

3. Push Force lên nhánh tính năng

Khi đã xử lý xong các xung đột và squash các commit cần thiết, bạn có thể tiến hành push lên remote. Do lịch sử commit đã thay đổi, bạn cần sử dụng lệnh --force.

Lệnh thực hiện:

bash Copy
git push origin feature --force

Lưu ý: Sau khi rebase, lịch sử commit trên nhánh tính năng sẽ khác với nhánh trên remote. Do đó, bạn cần push force để ghi đè lịch sử cũ.

4. Tạo Merge/Pull Request

Trong quá trình tạo PR/MR, một lưu ý quan trọng là các yêu cầu phê duyệt nên diễn ra theo thứ tự. Hãy chắc chắn rằng mọi PR/MR đều được rebase ngay sau khi một PR/MR trước đó đã được hợp nhất vào nhánh chính.

Tổng Kết

Cả hai phương pháp MergeRebase đều có mục tiêu cuối cùng là hợp nhất các thay đổi từ một nhánh vào nhánh chính. Tuy nhiên, lựa chọn giữa hai phương pháp này tùy thuộc vào mục tiêu của dự án bạn đang thực hiện.

  • Rebase thường được ưa chuộng nếu bạn muốn giữ cho cây Git gọn gàng, sạch sẽ và dễ dàng theo dõi.
  • Merge là lựa chọn hiệu quả nếu bạn ưu tiên bảo toàn lịch sử đầy đủ và không ngại đối mặt với các commit phức tạp.

Hy vọng bài viết này sẽ giúp bạn có cái nhìn sâu sắc hơn về quy trình làm việc với Git Rebase. Nếu bạn muốn tìm hiểu thêm, hãy tham khảo các tài liệu và bài viết bên dưới.

Tài liệu tham khảo

source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào