Tóm lại: Thực tiễn tốt nhất là phân nhánh, hợp nhất thường xuyên và luôn luôn đồng bộ .
Có những quy ước khá rõ ràng về việc giữ mã của bạn trong một nhánh riêng biệt từ nhánh chính:
- Bạn sắp thực hiện một thay đổi lớn hoặc đột phá
- Bạn sắp thực hiện một số thay đổi có thể không được sử dụng
- Bạn muốn thử nghiệm một cái gì đó mà bạn không chắc chắn nó sẽ hoạt động
- Khi bạn được yêu cầu phân nhánh, những người khác có thể cần làm gì đó trong chủ
Nguyên tắc chung là sau khi phân nhánh, bạn nên giữ đồng bộ với nhánh chính. Bởi vì cuối cùng bạn cần hợp nhất nó trở lại thành chủ. Để tránh một mớ hỗn độn phức tạp lớn khi hợp nhất trở lại, bạn nên cam kết thường xuyên, hợp nhất thường xuyên.
Thực hành tốt để làm theo
Một mô hình phân nhánh Git thành công của Vincent Driessen có những gợi ý tốt. Nếu mô hình phân nhánh này hấp dẫn bạn, hãy xem xét phần mở rộng dòng chảy thành git . Những người khác đã bình luận về dòng chảy .
Thực hành gắn thẻ
Như bạn đã biết, Git cung cấp cho bạn các định danh cam kết như 1.0-2-g1ab3183 nhưng đó không phải là thẻ! Việc gắn thẻ được thực hiện với thẻ git và các thẻ được tạo bằng thẻ git là cơ sở cho các định danh cam kết mà git mô tả tạo ra. Nói cách khác, trong Git bạn không gắn thẻ chi nhánh. Bạn đang gắn thẻ cam kết. Thật đúng khi nói rằng thẻ chỉ là một con trỏ chú thích đến một cam kết.
Hãy xem xét ví dụ thực tế đã chứng minh điều đó,
/ - [v1.0]
v
---. ---. --- .--- S ---.--- Một <- chủ
\
\ -.--- B <- kiểm tra
Hãy cam kết 'S' được cam kết chỉ bằng thẻ 'v1.0'. Cam kết này là cả trên nhánh 'chính' và trên nhánh 'thử nghiệm'. Nếu bạn chạy " mô tả git " trên đầu trang của cam kết 'A' (đầu nhánh 'chủ'), bạn sẽ nhận được một cái gì đó như thế v1.0-2-g9c116e9
. Nếu bạn chạy "mô tả git" trên đầu trang của cam kết 'A' (còn gọi là nhánh 'thử nghiệm'), bạn sẽ nhận được một cái gì đó giống như v1.0-2-g3f55e41
, đó là trường hợp với cấu hình mô tả git mặc định. Lưu ý rằng kết quả này là hơi khác nhau. v1.0-2-g9c116e9
có nghĩa là chúng tôi cam kết với id SHA-1 đã được sắp xếp 9c116e9
, 2 lần xác nhận sau thẻ v1.0
. Không có thẻ v1.0-2
!
Nếu bạn muốn thẻ của mình chỉ xuất hiện trên nhánh 'chính', bạn có thể tạo cam kết mới (ví dụ: chỉ cập nhật thông tin phiên bản mặc định / dự phòng trong GIT-VERSION-FILE) sau điểm phân nhánh của nhánh 'thử nghiệm'. Nếu bạn gắn thẻ cam kết trên nhánh 'test' với ví dụ 'v1.0.3` thì nó chỉ hiển thị từ' test '.
Người giới thiệu
Tôi đã tìm thấy nhiều, rất nhiều, các blog và bài viết hữu ích để học hỏi. Tuy nhiên, những cái được minh họa chuyên nghiệp là những cái hiếm. Vì vậy, tôi muốn giới thiệu một bài đăng - Một mô hình phân nhánh Git thành công của @nvie. Tôi đã mượn hình minh họa của anh ấy :)