Dòng chảy Git - Merge squash là gì?

Một thuật ngữ khó nhớ phải không?

Merge squash - Nén cho phẳng, không phải "quất" hô biến lịch sử commit

Khoan đã, bạn đừng vội đọc nó là "Quất" nhé, nó không có nghĩa như chính từ tiếng Việt đó. Squash chỉ đơn giản là gói lại và hợp nhất một branch nào đó với các thay đổi của bạn trước khi merge vào nhánh thượng nguồn (upstream).

Squash on merge
Squash on merge

Theo từ điển tiếng Anh:

Squash: crush or squeeze (something) with force so that it becomes flat, soft, or out of shape.

Squash cho phép bạn làm sạch lịch sử commit của một branch khi thực hiện một merge request. Hay nói một cách khác, gom tất cả các thay đổi trong merge request như một commit duy nhất, và sau đó merge commit đó.

Trong thí dụ dưới đây, squash một merge request sẽ chuyển đổi một danh sách dài các commit như sau:

Sau khi merge, chỉ còn là một commit duy nhất:

Trên gitlab, trước khi tạo một PR (Pull Request) để merge branch của bạn vào branch chính, có option cho phép squash tất cả commit trên branch đó vào một commit duy nhất.

Tags