Jon Purdy có ý tưởng đúng. git flowlàm cho việc quản lý thực tế của các chi nhánh này cũng dễ dàng và quản lý chi nhánh là một đối số để chuyển sang git.
Hãy bắt đầu với một tóm tắt cơ bản về git, vì bạn đang đến từ các svn-to- gitquan điểm. Hãy xem xét gitnhững điều sau:
master--...............-.....-..............-
\ / / /
---develop---------............../
\ /
--feature---
Ở trên, bạn rẽ nhánh mastertới develop(ký hiệu là \) và nhánh developtới featurenhánh. Chúng tôi hợp nhất các nhánh đó sao lưu (ký hiệu là /), với các dấu ( -) dọc theo một nhánh. (Nếu không có cam kết nhưng hợp nhất là cách bên phải, có các .chỉ số cho thấy rằng tiếp theo -là cam kết tiếp theo).
Vừa đủ dễ. Điều gì nếu chúng ta có một hotfix trong bản phát hành chính của chúng tôi?
master--...............-.....-................-...........-.........-
\ / / / \ /| /
\ / / / -hotfix-- V /
---develop---------............../..............-...----
\ / \ V /
--feature--- --feature2...----
Ở trên, developphân nhánh từ master. Lỗi được phát hiện trong masterđã được sửa bằng cách phân nhánh từ master, sửa nó và hợp nhất lại master. Sau đó chúng tôi sáp nhập mastervào develop, và sau đó developvàofeature2 , cuộn mã mới từ hotfixcác nhánh này.
Khi bạn hợp nhất feature2trở lại develop, lịch sử của nó bao gồm developvới hotfix. Tương tự như vậy, developđược hợp nhất feature2với mã mới từ đó master, do đó, việc hợp nhất developtrở lại mastersẽ xảy ra mà không gặp trở ngại nào, vì nó dựa trên cam kết masterđó vào thời điểm đó như thể bạn đã phân nhánh từ masterthời điểm đó.
Vì vậy, đây là một cách khác để làm điều đó.
master--..........-........-
\ /\ /
---1.0-- --1.1--
1.0 phiên bản của bạn có được tagged- 1.0.1, 1.0.2, 1.0.3, và vân vân.
Bây giờ đây là một mẹo: bạn đã tìm thấy một lỗi trong 1.0 và nó ảnh hưởng đến 1.1, 1.2 và 1.3. Bạn làm nghề gì?
Bạn tách ra bản phát hành mới nhất hoặc được bảo trì sớm nhất và sửa nó. Sau đó, bạn nhập mới hotfixchi nhánh thành 1.3-Và vào 1.2, 1.1và 1.0. Không phân nhánh từ mỗi nhánh phiên bản bảo trì; không hợp nhất 1.0vào masterhoặc hợp nhất mastertrở lại vào 1.0. Lấy một hotfixnhánh và hợp nhất nó vào tất cả các nhánh phiên bản của bạn. Nếu có xung đột, nó sẽ cho bạn biết; xem lại mã của bạn để đảm bảo các thay đổi là chính xác ( git difflà bạn của bạn).
Bây giờ thay đổi cụ thể được áp dụng ở khắp mọi nơi. Dòng dõi được phân nhánh, nhưng không sao. Đó không phải là sự ngớ ngẩn. Gắn thẻ 1.3đầu là 1.3.17, hợp nhất nó vào mọi tính năng đang thực hiện được phân nhánh từ 1.3và tiếp tục.
Các git flowphần mở rộng giúp quản lý các bảo trì, tính năng, và các chi nhánh hotfix cho bạn. Một khi bạn nhận được quy trình công việc, điều này là không đáng kể và gặp phải một số lượng lớn rắc rối trong việc quản lý mã nguồn.
Tôi đã thấy điều này được thực hiện trên các nhóm lập trình, nhưng bản thân tôi chưa từng làm việc sâu sắc như một lập trình viên, vì vậy tôi vẫn tự mình xoay quanh công việc hàng ngày.
gitthẻ sau mỗi lần xây dựng thành công không? Điều này sẽ có thêm lợi thế là nó làm cho nó thực sự rõ ràng nhữnggitcam kết nào có vấn đề về xây dựng hoặc thử nghiệm thất bại, vì chúng sẽ vẫn không được gắn thẻ.