Git merge “gộp hai branch lại với nhau”

“Git merge” được sử dụng khi nào?

  • Git merge được dùng khi ta muốn gộp hai branch lại với nhau, thao tác này thường dùng để merge branch khác vào branch master trước khi push lên remote repository, hoặc merge hai branch thành một để giải quyết chung một task.

Cấu trúc câu lệnh “git merge”

$ git merge <branch_name>

hoặc

$ git merge <branch-name> <merged-branch-name>

Ví dụ tình huống sử dụng “git merge”

Hãy hình dung chuyện sẽ xảy ra khi chúng ta bắt đầu làm việc trên một tính năng mới, trên feature branch, sau đó team khác commit code mới lên master branch.

Cái commit mới trong master liên quan đến feature chúng ta đang làm. Để lấy commit mới này từ master và đưa về feature branch đang làm, chúng ta có 2 lựa chọn: merge hoặc rebase

Lựa chọn merge

git checkout feature
git merge master

//hoặc viết bằng một dòng luôn
git merge master feature

Kết quả là nó sẽ tạo ra một merge commit mới trên feature branch, Chúng ta có một cấu trúc như sau

Nói một cách khác, feature branch sẽ có thêm một stage cần commit. Nếu master bị thay đổi thường xuyên, liên tục, cái history của feature branch có thể sẽ rất lộn xộn, mặc dù có thể xử lý bằng git log, tuy nhiên các bạn developer khác sẽ rất khó mà hiểu được history của project

Lựa chọn rebase

Một lựa chọn khác với merge, là dùng rebase
(Vấn đề này không liên quan đến git merge, nhưng được nói thêm ở đây để hiểu thêm về lệnh git rebase)

git checkout feature
git rebase master

Nó sẽ đưa toàn bộ feature branch lên trên cùng của master.

Lợi ích của dùng rebase là chúng ta có history của project sạch sẽ hơn. Sẽ không có những merge commit dư thừa như trong lệnh merge. Nhưng trong tình huống này thì đừng bao giờ dùng rebase nhé, xem tiếp để biết lý do..

Đừng bao giờ chọn “git rebase” cho tình huống này

Hãy thử đoán xem chuyện gì xảy ra nếu chúng ta rebase master vào feature branch

Lệnh rebase sẽ đưa toàn bộ commit của master xuống feature. Vấn đề là cái này chỉ nằm trên local repository của chúng ta. Tất cả những dev khác sẽ tiếp tục làm việc trên master gốc. Git lúc này sẽ hiểu history master của chúng ta không phụ thuộc vào những người khác.

Cách duy nhất để sync lại 2 master branch là merge chúng lại. Bạn đã thấy sự rắc rối chưa?

Cân nhắc trước khi lựa chọn rebase

Trước khi chạy lệnh git rebase, luôn hỏi chính mình “Có đứa nào đang làm việc trên branch này?” Nếu câu trả lời là có, rút tay khỏi bàn phím và nghĩ đến giải pháp an toàn hơn như git revert

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *