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 ạ.
Git squash là gì và cách dùng để gộp commit ra sao.
Thảo luận (7 bình luận chính)
Đứ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.
Đồ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.
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.
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.
Đọ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.
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.
Đọ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).
Đọc thắc mắc của chủ thớt mà thấy hình bóng mình hồi mới mò mẫm làm TikTok Sh...
Tại chủ đề: Lăn tăn giữa lập tài khoản cá nhân hay doanh nghiệp để cách tạo nick tiktok shop chuẩn xác thế nào.Điểm mấu chốt bạn cần nhớ là cả hai cách này đều ổn, nhưng đừng dại mà để cha...
Tại chủ đề: Lăn tăn giữa dùng chanh hay bã cà phê khử mùi hôi tủ lạnh ngăn mát thế nào.Điểm mấu chốt bạn cần nhớ là làm cái gì thì làm, cứ né mấy cái văn phòng công...
Tại chủ đề: Xin kinh nghiệm làm công chứng ở đâu nhanh gọn thủ tục thế nào.Đừng nghe thiên hạ dọa mà nản, sang tên xe khác tỉnh bây giờ đỡ khổ hơn trước...
Tại chủ đề: Chia sẻ kinh nghiệm thực tế về thủ tục sang tên đổi chủ xe máy ra sao.Làm TikTok Shop trên điện thoại thì hoàn toàn khả thi, cứ tải app TikTok Sell...
Tại chủ đề: Xin kinh nghiệm cách tạo tài khoản tiktok shop trên điện thoại thế nào.