Git rebase được sử dụng khi nào?
Lệnh git rebase
được dùng để gộp các commit từ nhánh này vào nhánh khác, bằng cách xây dựng lại các commit base
kế thừa từ nhánh khác và viết lại lịch sử commit sau các commit cơ sở mới.
Cấu trúc câu lệnh “git rebase”
$ git rebase <branch-name>
hoặc
$ git rebase <branch-name> <rebase-branch-name>
Ví dụ tình huống sử dụng “git rebase”
Giả sử ta có nhánh beta
, ta muốn gộp nhánh beta vào master
.
Đầu tiên, cần phải xác định là mình đang đứng ở nhánh master
và thực hiện lệnh
$ git rebase beta
hoặc
$ git rebase beta master
Như trên hình trên, trước thời điểm rebase
, nhánh master
có các commit cơ sở giống với nhánh beta đó là: C1, C2, C3
Lệnh git rebase
sẽ đưa toàn bộ nhánh beta
làm base
của master
, do vậy các commit tiếp theo sau commit cơ sở ban đầu của master sẽ được nối tiếp vào, trong đó có thay đổi lại lịch sử commit, cũng sử lý xung đột giữa commit B2 và D1 để viết lại commit D1 thành D1′
Tương tự, nếu gộp master
vào beta
thì sơ đồ có thể là:
Có thể giải thích nguyên lý hoạt động trường hợp rebase trên theo cách khác như sau:
- Lưu các
commit
B1, B2 (các commit củabeta
tính tới cha chung gần nhất) - Reset
beta
về commit C3. - Áp dụng các commit của
master
đến cha chung gần nhất C3. - Tạo các commit mới B1′, B2 với B1′ tạo ra từ xử lý xung đột giữa commit B1 và D2.
Đặc điểm “git rebase”
- Các commit của rebase-branch sẽ là các commit mới nhất.
- Lịch sử commit sẽ bị thay đổi.