Rebase và Chuyển đổi nhánh trong Git

Rebase

Rebase là quá trình thay đổi lịch sử commit của một nhánh bằng cách áp dụng các commit từ một nhánh khác. Thay vì sử dụng merge để hợp nhất các thay đổi, rebase cho phép bạn chèn các commit mới vào lịch sử commit hiện tại mà không tạo ra commit merge.

Ví dụ, giả sử bạn có hai nhánh: feature-branchmain. Bạn đang làm việc trên feature-branch và muốn áp dụng các commit mới nhất từ main lên nhánh hiện tại của mình. Bạn có thể sử dụng rebase để thực hiện điều này:

git checkout feature-branch
git rebase main

Khi bạn chạy lệnh này, Git sẽ lấy các commit từ main và áp dụng chúng lên feature-branch. Điều này có nghĩa là tất cả các commit trên feature-branch sẽ xuất hiện sau các commit từ main. Kết quả là lịch sử commit trên feature-branch sẽ trở nên sạch sẽ hơn và dễ đọc hơn.

Tuy nhiên, khi sử dụng rebase, cần lưu ý rằng việc thay đổi lịch sử commit có thể ảnh hưởng đến các nhánh đã được chia sẻ công khai (public branch). Do đó, nếu đã đẩy các commit từ nhánh hiện tại lên kho chứa từ xa, không nên sử dụng rebase trên nhánh đó để tránh gây xung đột và rối lịch sử commit.

 

Chuyển đổi nhánh (Branch)

Chuyển đổi nhánh trong Git đề cập đến việc chuyển từ một nhánh này sang nhánh khác. Khi bạn chuyển đổi nhánh, Git di chuyển con trỏ HEAD đến nhánh mới, cho phép bạn làm việc trên nhánh đó và thực hiện các thay đổi mà không ảnh hưởng đến nhánh khác.

git checkout feature-branch

Sau khi chuyển đổi nhánh, bạn có thể thực hiện các thay đổi trong thư mục làm việc (working directory). Tất cả các lệnh commit, add, và checkout sẽ áp dụng cho nhánh hiện tại.

Ví dụ, nếu bạn thêm một tệp tin mới và tạo commit trên feature-branch, chỉ nhánh đó sẽ chứa commit đó, trong khi nhánh main không bị ảnh hưởng. Điều này cho phép bạn phát triển các tính năng riêng biệt, sửa lỗi hoặc làm việc trên các phiên bản khác nhau của mã nguồn một cách độc lập. Bạn có thể chuyển đổi giữa các nhánh bất cứ khi nào muốn để làm việc trên từng nhánh riêng biệt.