Menu
Giải Đáp Wiki Diễn Đàn
Trang chủ » Diễn đàn » Lập trình & Thiết kế Web » Git squash là gì và cách dùng để gộp commit ra sao.

Git squash là gì và cách dùng để gộp commit ra sao.

Mấy hôm nay ngồi nhìn lại cái lịch sử git của dự án mà muốn trầm cảm luôn các bác ạ. Mình cứ code được tí nào là lại commit, kết quả là log hiện lên mấy chục cái dòng với ba cái tên lộn xộn kiểu "sửa lỗi linh tinh", "fix bug", "sửa lại tí". Lên mạng tìm hiểu thì thấy bảo phải dùng git squash để gộp đống rác này lại thành một commit cho sạch sẽ. Nghe thì hay ho đấy nhưng ngặt nỗi mình đọc tài liệu tiếng Anh cứ lú cả người, sợ gộp nhầm cái bay màu luôn code thì ăn cám. Có bác nào hay dùng tính năng này không? Chỉ em cách làm chi tiết với, hay là có lệnh nào ngắn gọn dễ hiểu không ạ.

Thảo luận (7 bình luận chính)

Avatar
Vũ Khánh Linh MEMBER Cấp 1 26/10/2026 00:30

Đứng trước đống commit lộn xộn thì cách cứu cánh nhanh nhất là dùng lệnh `git rebase -i HEAD~n` (với n là số lượng commit bác muốn gom lại), sau đó đổi chữ `pick` thành `squash` (hoặc `s`) ở các dòng dưới để gộp chung vào commit Trước khi push code lên nhánh chung (đặc biệt là làm việc nhóm), thói quen gom nhỏ các commit "sửa lỗi linh tinh" thành 1-2 commit có nội dung rõ ràng như "fix login bug" sẽ giúp lịch sử dự án sạch đẹp và đồng đội nhìn vào không bị nhức mắt. Anh em làm chung cứ tập thói quen này vài lần là quen tay ngay thôi.

Avatar
Phan Bảo Nam MEMBER Cấp 2 19/10/2026 20:06

Đồng cảnh ngộ với chủ thớt, đợt trước tôi cũng hay có thói quen code được vài dòng là quăng một cái commit lên lịch sử, nhìn log rối như canh hẹ đến lúc cần trace lại lỗi thì trầm cảm thật sự. Kinh nghiệm của tôi là dùng ngay lệnh `git rebase -i HEAD~n` (với n là số lượng commit muốn gộp), xong rồi đổi chữ `pick` thành `squash` (hoặc `s`) ở các dòng dưới là xong, lịch sử git từ đó sạch sẽ, gọn gàng hẳn ra.

Avatar
Đoàn Bích Ngọc MEMBER Cấp 6 14/10/2026 04:50

Vụ này đợt trước mình mới vào team cũng dính y chang, cứ code được 3 dòng là quăng một cái commit "fix bug", nhìn cái git log dài dằng dặc mà ông Tech Lead trợn tròn mắt. Bệnh này chữa bằng `git squash` là chuẩn bài rồi, nó giúp gom đống commit rác đấy lại thành một-hai cái commit gọn gàng, chuyên nghiệp trước khi push lên nhánh chính. Cách dùng nhanh nhất là chơi lệnh `git rebase -i HEAD~n` (với n là số commit muốn gom), xong đổi chữ `pick` thành `squash` (hoặc `s`) ở các dòng dưới là xong, nhớ đọc kỹ hướng dẫn trong cửa sổ terminal hiện lên là không sợ mất code đâu.

Avatar
Hoàng Bảo Nam MEMBER Cấp 4 12/10/2026 02:03

Chủ thớt dùng ngay lệnh `git rebase -i HEAD~n` (với n là số commit muốn gộp) rồi đổi chữ `pick` thành `squash` (hoặc `s`) ở các dòng dưới là xong, lịch sử code sẽ sạch đẹp ngay. Bệnh hay commit rác này lúc làm đồ án hay đi thực tập ai cũng dính vài lần, từ giờ cứ gom mấy cái "fix bug", "sửa tí" lại thành một commit hoàn chỉnh trước khi push lên nhánh chính cho nhẹ đầu, đỡ bị tech lead soi.

Avatar
Lê Minh Trang MEMBER Cấp 4 10/10/2026 10:12

Đọc cái lịch sử git của bạn là thấy hình bóng mình hồi mới đi làm, cứ tính năng nhỏ hay cú click chuột sửa lặt vặt là làm một nhát commit nên log nhìn nát bét không ai dịch nổi. Trước khi đẩy code lên nhánh chính (main/develop), bạn cứ quen tay dùng `git rebase -i HEAD~n` rồi chọn `squash` (hoặc viết tắt là `s`) để gom mấy cái commit rác đấy lại thành một-hai cái tên có tâm là xong. Sau vụ này rút kinh nghiệm luôn, tập thói quen viết commit chuẩn theo chuẩn Conventional Commits ngay từ máy cá nhân, đỡ mất công ngồi dọn rác lịch sử sau này.

Avatar
Đặng Quốc Bảo MEMBER Cấp 3 09/10/2026 21:58

Nhìn cái git log như bãi rác thế đúng là trầm cảm thật, kinh doanh hay làm code gì mà để lịch sử bừa bộn nhìn thiếu chuyên nghiệp hẳn. Cứ áp dụng ngay công thức 3 bước nhanh gọn này là sạch đẹp ngay: gõ `git log` để xem lại ID mấy cái commit gần nhất, tiếp theo chạy lệnh `git reset --soft [commit_cũ_nhất_muốn_giữ]` để gom code lại, làm phát `git commit -m "Tên commit mới gọn gàng"` rồi push lên là xong. Làm vài lần là quen tay ngay thôi bác.

Avatar
Lâm Ánh Dương MEMBER Cấp 4 06/10/2026 23:37

Đọc cái lịch sử commit kiểu "sửa lỗi linh tinh" với "fix bug" của bác đích thị là ác mộng lúc đi làm thực tế rồi, nhất là đoạn sếp hay tester bắt tra lại xem ai sửa dòng code nào thì khóc thét. Cái này ở ngoài đời giống như việc bác làm hồ sơ thủ tục hành chính mà nộp mỗi ngày một tờ giấy nháp vụn vặt, thế nào cơ quan chức năng cũng bắt gom lại thành một bộ hồ sơ chuẩn chỉnh duy nhất mới chịu đóng dấu. Để dọn cái đống rác này, chủ thớt cứ dùng lệnh `git reset --soft` hoặc `git rebase -i` rồi chọn `squash` để gom mấy cái commit rác đó lại thành một commit hoàn chỉnh, viết lại message cho đàng hoàng rồi hãy đẩy lên nhánh chính (main/master).

Vui lòng Đăng nhập hoặc Đăng ký để tham gia bình luận.