Khi đóng góp mã cho ứng dụng, thường bạn sẽ commit mã trên nhánh tính năng (feature branch) trong git. Trong hướng dẫn này, chúng ta sẽ xem cách giữ commit dự án đồng bộ (in sync). Chúng ta cũng sẽ nhìn nhanh vào git và GitHub là gì.
Chúng ta có thể nghĩ git như công cụ dòng lệnh theo dõi tất cả thay đổi làm cho mã. Lệnh phổ biến: git add, git commit, git push để lưu thay đổi. Đó là kiểm soát phiên bản (version control).
Sau khi các lệnh này dùng để lưu thay đổi làm cho file, lệnh git push sẽ lưu file vào nền tảng lưu trữ mã như GitHub. GitHub lưu file trong kho (repositories) và cho phép người dùng chia sẻ mã dễ dàng.
Nền tảng lưu trữ mã như GitHub làm việc từ xa trên dự án cùng nhau trở nên khả thi. Vì nhiều việc công nghệ chuyển sang làm việc từ xa, các giải pháp này thiết yếu hơn bao giờ hết.
Khi nào dùng git merge
Dù bạn làm việc cho công ty với lập trình viên khác, hoặc đóng góp dự án mã nguồn mở cho vui, bạn sẽ dùng lệnh git merge. Quan trọng là biết chính xác công ty hoặc dự án mã nguồn mở chấp nhận commit như thế nào. Hỏi xung quanh và đọc hướng dẫn đóng góp trước khi tiến xa với dự án.
Thông thường, bạn sẽ được giao làm việc trên tính năng cho app. Vì vậy, bạn sẽ commit thay đổi mã trên nhánh tính năng. Nhánh tính năng là nhánh "tách" (branches) từ nhánh master. Nhánh master là nơi mã production cuối cùng sống.
Khi ở chế độ phát triển, code trên nhánh tính năng giúp đảm bảo nhánh master không có bug có thể nảy sinh khi phát triển. Nhánh tính năng nên đặt tên theo tính năng bạn tạo. Lúc này, bạn ở nhánh tính năng kết nối và tách từ master.
Biểu đồ sau là cách tốt hình dung cách nhánh hoạt động.

Chúng ta thấy hai nhánh: topic và master. Nhánh topic là nhánh tính năng. A, B, C là commit diễn ra theo thời gian với C là commit mới nhất trên nhánh tính năng. G là commit mới nhất trên nhánh master.
Tình huống này xảy ra nếu đội khác commit lên master sau khi qua code review. Vì phiên bản mới nhất master khác phiên bản master trên máy bạn (từ git pull), chúng ta có vấn đề kiểm soát phiên bản. Điều này có thể dẫn đến merge conflicts.
Từ nhánh tính năng, bạn có thể dùng lệnh git merge master để hợp nhất nhánh master vào nhánh tính năng. Điều này đưa phiên bản master của bạn lên ngày, và khi mã qua code review, có thể dùng git push origin master đẩy thay đổi lên nhánh master.
Lại nhắc, chỉ đẩy lên master khi đã đáp ứng tất cả hướng dẫn đóng góp. Thực hành tốt nhất là không bao giờ đẩy mã trực tiếp lên master do bug hoặc vấn đề từ mã chưa test.
Kết luận
Thoải mái dùng lệnh git là cần thiết cho bất kỳ lập trình viên nào. Biết cách và khi nào dùng lệnh cụ thể sẽ giữ phiên bản mới nhất mã được lưu và ngăn vấn đề hợp nhất với nhánh khác.
Khi dùng git trong bối cảnh đóng góp codebase công ty hoặc dự án mã nguồn mở, hãy chắc chắn tuân thủ hướng dẫn. Mỗi dự án muốn review mã khác, vì vậy tuân thủ hướng dẫn đặc biệt khi dùng git merge master là cần thiết.