Các dự án CNTT ngày càng phức tạp, đòi hỏi nhiều nhân sự và nhiều thời gian để hợp tác và phát triển, và cả sửa lỗi. Bởi vậy việc quản lý các thay đổi của mã nguồn, để có thể lần theo quá trình phát triển của các tính năng, lần theo dấu vết của lỗi là điều hết sức quan trọng, và đó là nhiệm vụ của các công cụ quản lý mã nguồn, Source Code Managment tool, gọi tắt là SCM. Có thể nói việc sử dụng các công cụ SCM là đương nhiên, là bắt buộc với mọi dự án.
Phổ biến nhất là các SCM thuộc họ Git, ví dụ như GitHub, GitLab… GitHub miễn phí, phù hợp cho các SV để upload và quản lý mã nguồn của các bài tập của mình. GitHub cũng công khai cho tất cả mọi người xem và download về mã nguồn. Doanh nghiệp muốn sử dụng GitHub phải đóng phí để ẩn các dự án đó.
Việc sử dụng GitHub là dễ dàng, không khó. Chỉ mất khoảng 2h để làm quen với các tính năng này. Sử dụng tính năng hợp lý cho từng tình huống mới khó. Xác định luồng công việc, khi nào commit, khi nào merge, khi nào tách nhánh, tại sao nên re-base.. lại quan trọng hơn nhiều. Nguyên tắc muôn thủa “Học ngôn ngữ lập trình thật dễ, cách vận dụng mới là đẳng cấp” vẫn đúng với Git.
Có trang web sau giới thiệu về cách sử dụng Git rất tốt, rất đáng để tham khảo: https://backlog.com/git-tutorial/vn/intro/intro1_1.html . Đặc biệt các tình huống trong phần Chia sẻ repository và Giải quyết xung đột rất đáng lưu tâm.
Một số tham khảo khác:
- Gợi ý về 4 branh chính của một dự án: Master, Develop, Release, HotFix: https://backlog.com/git-tutorial/vn/stepup/stepup1_5.html
- Phân biệt và gợi ý cách áp dụng Merge <> Rebase: https://backlog.com/git-tutorial/vn/stepup/stepup1_4.html
- Phân biệt PUSH = FETCH + Merge và PULL: https://backlog.com/git-tutorial/vn/stepup/stepup3_2.html
- Áp dụng cherry-pick khi muốn áp dụng thay đổi của 1 commit duy nhất (chứ không phải cả branch): https://kipalog.com/posts/Su-dung-git-cherry-pick hoặc https://viblo.asia/p/tim-hieu-ve-git-git-cherry-pick-Qbq5QW3RZD8
Với Mecurial SCM, khái niệm tương đương là graft.