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.
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.