Ví dụ mình có 2 branch ở 2 thời điểm khác nhau là feature/new01
và feature2/new01
:
1.1 Giờ mình muốn dùng những commit của branch feature/new01
gắn tiếp vào feature2/new01
thì dùng lệnh:
-
git checkout feature/new01
=> chuyển vềfeature2/new01
. -
git rebase feauture2/new01
=> lúc nàyfeature/new01
sẽ nối tiếp vàofeauture2/new01
.
(2 branch màu hồng ban đầu giờ đã gộp thành 1 nhánh thẳng màu xanh)
1.2. Trường hợp thứ 2 là rebase branch đã được merge từ branch khác - như branch new-branch03
dưới đây:
git checkout new-branch03
git rebase new-branch04 --preserve-merges
(câu lệnh này đã bị deprecated, nếu không được mọi người có thể dùnggit rebase new-branch04 --rebase-merges
).
Lúc này chúng ta gắn dc new-branch03
và branch của nó vào new-branch04
. Với branch có merge branch phụ như thế này mọi người nên dùng cách này nhé !
Bạn có quá nhiều commit trên 1 branch và muốn nén nó lại cho gọn? Hãy dùng:
git rebase -i
- Một editor hiện ra, chúng ta có thể chỉnh các commit về squash, mọi người vẫn còn nhớ cú pháp với editor này chứ =))
Gõ A
để edit
Dùng phím mũi tên để di chuyển đến nơi cần chỉnh sửa: mình sẽ di chuyển con trỏ đến dòng pick
thứ 2 và chỉnh thành squash
. Tức là mình sẽ nén 2 commit này lại thành 1 commit add 05 1
. Còn những tùy chọn bên dưới mọi người có thể tham khảo thêm trên google nhé!
Nhấn ESC
để thoát chế độ insert.
Nhập :wq
để lưu và thoát.
Bảng này hiện lại để chúng ta xem lại những thông tin đã thay đổi.
Nhập :q
để thoát.
- Lúc này branch được rebase vào chỉ hiện 1 commit đã squash vào.
Nếu chúng ta có 1 branch chứa vài commit, nhưng giờ chúng ta chỉ muốn sử dụng 1 vài commit trong branch này chứ chưa muốn merge cả branch vào, thì chúng ta có thể dùng git cherry-pick
. Cùng xem qua 1 ví dụ dưới đây nhé:
Ở đây mình có branch new06
với 2 commit là add 8
và add 9
.
Giờ mình muốn dùng commit add 8
này đưa vào master thì sẽ dùng lệnh:
-
git checkout master
: chuyển về branch master -
git cherry-pick <id của commit add 8>
Chúng ta sẽ copy được commit add 8
này vào master.
Mọi người có thể dùng git cherry-pick commit1 commit2 commit3
để copy nhiều commit cùng lúc.
Có thể bạn biết rồi: Hình các branch git có màu hồng, màu xanh là từ extension Git Graph trên Visual Studio Code nhé!