squash commits lúc merge từ branch của bạn

Bài viết được sự cho phép của tác giả Lê Chí Dũng

Thông thường một feature mới thường được làm trên một nhánh (branch) riêng và thường xuyên pull các cập nhật từ nhánh master trong quá trình đấy.

  Merge vs Rebase trong Git
  Sự khác biệt giữa ‘git merge’ và ‘git rebase’ là gì?

Sau khi branch này đã được kiểm tra và chấp nhận để merge vào thì lệnh git merge được sử dụng để nhập nhánh này. Xin lưu ý khi merge một nhánh vào thì tất cả commit của nhánh đấy cộng với một commit mới (gọi là meta merge commit) sẽ được thêm vào nhánh chỉ định. Ở một số cty tôi đã từng biết thì các feature đều được quản lý bằng các ticket system và để thuận tiện cho việc truy xuất sau này thì tất cả commit của branch feature đc nén (squash) thành một commit trước khi merge vào master. Thủ tục thông thường là dùng git rebase -i tuy thủ tục này khá là mất thời gian nếu bạn có nhiều commit. Có một chiêu khác tiện lợi hơn tôi muốn chia sẻ là sử dụng

git merge --squash

lệnh này sẽ squash tất cả commit lại thành một và hỏi người dùng tên commit mới là gì rồi sẽ merge vào branch. Nếu bạn muốn edit commit message thì có thế dùng

git merge --squash --edit

Mình chưa bàn về việc để nguyên commit history vs nén lại thành 1 là tốt hay dở, vì mỗi cty có cách thức quản lý riêng, nhưng riêng tôi thì tôi thấy cứ để nguyên để giúp người review sau này có đc một cái nhìn toàn diện về progress của branch, vấn đề chính là sử dụng GitHub hiệu quả (chú thích đầy đủ) để giúp người khác sau này có thể quay lại kiểm tra.
Bài viết gốc được đăng tải tại lcdung.top
Có thể bạn quan tâm:
Xem thêm Việc làm Developer hấp dẫn trên TopDev