Lại bàn về cách commit code trong dự án

Lại bàn về cách commit code trong dự án

Threads
  • Có bạn nào trong lúc code mà bị "ngẫn tò te" hoặc "lú lẫn" trong mớ hỗn độn của mình viết ra chưa. Những lúc như thế tôi thường hay ngừng lại, thư giãn đầu óc, hoặc để mai tính tiếp. Ấy vậy mà rất hiệu quả nhé! Lúc sau xem lại cái tự nhiên thấy vấn đề ở đâu ngay.

    Hoặc cũng có thể thử áp dụng phương pháp "chú vịt vàng" - thử giải thích vấn đề đang gặp phải với vịt xem, nó sẽ cho thấy mâu thuẫn trong lời nói ra.

    Còn không có tiền mua vịt to thì xe túi mù ra vịt bé giống mình nè 😅

    » Xem thêm
  • Ơ buồn cười thật. Ai cũng biết GIF là định dạng ảnh động thường được dùng thay cho video clip để hiển thị các nội dung ngắn trên nền tảng web. GIF tiện hơn các nội dung dạng video là vì nó được hiển thị như một bức ảnh và được hỗ trợ rộng rãi. Cơ mà GIF có dung lượng nặng quá.

    Nói thật nhiều lúc mình có vài cái hành động muốn hiển thị lên web cho mọi người xem, cơ mà định dạng GIF nó nặng với cả cũng không biết cách tối ưu cho nhẹ xuống. Hôm nay lên mạng tìm hiểu xem định dạng nào có khả năng thay thế GIF trong tương lai thì mọi người biết đó là gì không? Là WEBP (webp)!!! Đúng vậy, là định dạng ảnh mà mình đang dùng trên blog lâu nay luôn á, mà giờ mới biết là nó hiển thị được cả ảnh động nữa, hơi quê 😆

    Kết hợp với ffmpeg nữa là chuyển được tất tần tật video clip thành webp được ngay. Để vài nửa ngồi chế lại cái cli một tí là dùng ngon luôn mọi người ạ 🤪

    » Xem thêm
  • Cảm giác như Github Copilot đang cố gắng mở rộng thị trường cho anh em developer á. Mới trước họ ra mắt Github Open Copilot Chat thì mới đây lại thêm cái Using GitHub Copilot in the command line dùng để giải thích hoặc gợi ý lệnh trong terminal.

    Đây, cách dùng rất đơn giản thôi, ví dụ muốn nó giải thích câu lệnh sudo apt-get để làm gì, thì:

    $ gh copilot explain "sudo apt-get"

    Hoặc nhờ nó gợi ý lệnh mong muốn, sử dụng tiếng Việt được luôn nhé (kể cả tiếng Việt không dấu vẫn hiểu 😳)

    $ gh copilot suggest "xoá commit chưa push"

    Mình đã kiểm tra và thấy lệnh ra rất đúng, xịn thật 🤓

    » Xem thêm

Vấn đề

Hàng ngày chúng ta thường xuyên phải code và fix bug liên tục cùng với những thành viên khác trong team. Bỗng một ngày đẹp trời tester hô lên cái lỗi mà bạn đã sửa từ mấy tuần trước bỗng dưng quay trở lại. Bạn liền lên tiếng phân bua rõ ràng đã sửa rồi và phải chứng minh cho tester thấy. Bạn mở lịch sử commit lên và bùm... commit, fix bug, fix some bug... là những thứ đập vào mắt bạn. Không ai khác đó là chính là những message mà bạn commit!

Rồi giờ thì làm sao để tìm lại commit đó? Bạn tự dằn vặt tại sao lúc đó mình không commit rõ ràng hơn. Không sao cả, ai cũng có lúc mắc sai lầm và sai lầm là để sửa chữa nhưng quan trọng hơn là bạn phải nhận ra là bạn đã sai đã rồi để mình bày cách cho!

Hãy commit rõ ràng

Đúng thế trước tiên là hãy cố gắng đặt ra được những message thật rõ ràng và mang tính hành động hướng đến đối tượng.

Ví dụ:

  • Sửa lỗi lấy danh sách tỉnh/thành bị thiếu tên
  • Thêm tính năng cập nhật tỉnh/thành
  • Thêm mục Tài liệu tham khảo vào README.MD

Mình đang lấy ví dụ là Tiếng Việt, tùy vào từng quy tắc dự án của bạn có thể commit bằng Tiếng Anh nhưng cơ bản nội dung vẫn theo tinh thần như trên.

Hãy thêm prefix vào trước message

Đây là cách mà nhiều Dev đã và đang áp dụng trong nhiều dự án trên "mạng xã hội" Github. Dựa vào prefix để phân loại các loại commit thường thấy của bạn trong dự án, từ đó dễ dàng phân biệt và tìm kiếm hơn.

Chung quy là sẽ có một số prefix mà các Dev sẽ tự quy ước, nhưng không nhất thiết phải làm theo.

Một số hay dùng như:

  • feat: thêm một tính năng
  • fix: sửa một lỗi
  • refactor: tối ưu một tính năng nào đó đã có từ trước
  • style: những sửa đổi không làm thay đổi ý nghĩa của mã trước đó. Thường liên quan đến định dạng mã như thiếu dấu chấm phẩy (;), xóa khoảng trắng (space)...

Còn nhiều những prefix khác nữa, bạn có thể tham khảo ở bài viết này How to Write Better Git Commit Messages – A Step-By-Step Guide.

Ví dụ:

  • fix: Sửa lỗi lấy danh sách tỉnh/thành bị thiếu tên
  • feat: Thêm tính năng cập nhật tỉnh/thành
  • docs: Thêm mục Tài liệu tham khảo vào README.MD

Cố gắng tách biệt ý nghĩa của các commit

Mình biết có nhiều bạn (kể cả mình) sẽ hay gặp trường hợp trong khi đang thêm tính năng hay sửa một lỗi này bỗng nhiên phát hiện ra một lỗi khác và tiện tay sửa luôn. Rồi đến lúc commit thì chỉ viết message chung chung là "sửa một số lỗi". Điều này rất là tiện tuy nhiên lại gây khó khăn trong truy vết, thế nên hãy cố gắng sửa chúng một cách lần lượt. Đừng sợ tốn commit mà hãy commit thật rõ ràng.

Hãy áp dụng Git Flow

Git flow là thuật ngữ để chỉ "quy ước" làm việc của team trong dự án. Ví dụ dự án phải có 3 nhánh là master để lưu lại code mới nhất, nhánh release để xác định tính năng sẵn sàng cho production và nhánh develop để phát triển tính năng cho release.

Ngoài ra Git Flow cũng quy định luồng phân chia và hợp nhất nhánh trong khi đang phát triển tính năng. Có một Git Flow rất nổi tiếng đó là Tóm tắt Git-Flow, các Dev có thể tham khảo.

Cuối cùng, hãy dùng tools có giao diện để quản lý

Nếu bạn đã quen với giao diện dòng lệnh thì không sao nhưng với mình có nhiều lúc phải dùng những tools để quản lý Git. Mình thấy nó khá là tiện và cũng dễ dàng theo dõi Flow của dự án luôn.

Bây giờ hầu hết các trình viết code đều tích hợp hoặc có plugin giúp cho việc quản lý git bằng giao diện dễ dàng và tiện dụng, các Dev có thể tìm hiểu thêm tuỳ theo công cụ mà mình đang sử dụng.

Tổng kết

Những chia sẻ bên trên của mình đều xuất phát từ kinh nghiệm trong công việc, việc áp dụng nó trong dự án của các Dev phải tuỳ thuộc vào Team Work và Flow của dự án. Nếu các Dev thấy chưa hợp lý hoặc có còn cách nào hay hơn thì hãy để lại bình luận cho mình và mọi người biết nhé!

hoặc
* Bản tin tổng hợp được gửi mỗi 1-2 tuần, huỷ bất cứ lúc nào.
Author

Xin chào, tôi tên là Hoài - một anh Dev kể chuyện bằng cách viết ✍️ và làm sản phẩm 🚀. Với nhiều năm kinh nghiệm lập trình, tôi đã đóng góp một phần công sức cho nhiều sản phẩm mang lại giá trị cho người dùng tại nơi đang làm việc, cũng như cho chính bản thân. Sở thích của tôi là đọc, viết, nghiên cứu... Tôi tạo ra trang Blog này với sứ mệnh mang đến những bài viết chất lượng cho độc giả của 2coffee.dev.Hãy theo dõi tôi qua các kênh LinkedIn, Facebook, Instagram, Telegram.

Bạn thấy bài viết này có ích?
Không

Bình luận (2)

Nội dung bình luận...
Avatar
Trần Cường2 năm trước
Thực sự mình không để ý đến cái này, mình chỉ commit theo lý do tại sao
Trả lời
Avatar
Linh Trần2 năm trước
Giờ mình mới biết có commit theo
Trả lời