Cách merge branch mà không có merge commit

Giả sử bạn đang dev trên branch có tên feature-123
Trong lúc bạn code thì cần những code của người khác  trên branch master. Mỗi lần merge từ master vào feature-123 sẽ tạo ra 1 merge commit làm lịch sử của git rất rối.
Đây là follow cách làm của mình:

    1. Commit tạm tất cả những thay đổi trên branch của mình
    2. Chuyển sang branch master để pull code mới nhất
    3. Chuyển về branch của mình sử dụng rebase

      Ở bước này bạn có thể thay đổi thứ tự của commit trên branch của mình hoặc gộp (squash) tất cả thành 1 commit. Nếu không muốn thay đổi gì bạn bấm  esc => :wq => enter

    4. Sửa conflict nếu có rồi rebase tiếp
    5. Reset commit tạm rồi push những update từ master đã dc merge vào

      ※ Có thể dùng cách sau nếu không muốn reset các commit đã có trên feature-123

Dùng lệnh push nhưng chỉ push từ commit cuối cùng của develop. Giả sử commit cuối cùng của develop có sha là 13a0af3c1f52262e68e2ba8211369f52769c9dea thì ta sẽ dùng lệnh   git push origin 13a0af3c1f52262e68e2ba8211369f52769c9dea:feture-123

Bạn đã có 1 branch giống như vừa merge từ master mà trong lịch sử (log) ko hề có commit merge. Với cách này bạn có thể liên tục lấy code mới nhất từ master để tránh sau này có conflict quá nhiều.

※Có thể sử dụng git reset để đưa các thay đổi về trạng thái trước khi add. (git reset –soft sẽ đưa về trạng thái đã add chuẩn bị commit)

Lưu ý cách này chỉ nên dùng khi bạn có 1 branch riêng. Nếu có ai đã checkout branch này của bạn thì khi bạn rebase làm thay đổi lịch sử commit của branch người đó sẽ ko thể pull được. (Nếu người đó chưa commit hay làm gì trên branch  thì có thể xóa đi checkout lại để lấy branch mới nhất)

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 *