Gần đây tôi đã có một cuộc thảo luận với những người hoàn toàn trái ngược với chiến lược rebase của các nhánh tính năng trên GIT. Nó dường như là một mô hình được chấp nhận để chỉ sử dụng rebase cho các chi nhánh địa phương, tư nhân nhưng không bao giờ sử dụng nó khi có một số người làm việc trên cùng một tính năng & chi nhánh, theo cái gọi là "Quy tắc nổi loạn vàng" này (như được giải thích ở đây: https : //www.atlassian.com/git/tutorials/merging-vs-rebasing/conceptual-overview )
Tôi chỉ ngạc nhiên khi có sự đồng thuận về điều này. Tôi đã làm việc 3 năm với một chiến lược nổi loạn hoàn toàn, với khoảng 20 nhà phát triển làm việc cùng nhau và đoán xem, nó đã hoạt động như thế nào.
Quá trình cơ bản là:
- Bạn tạo nhánh tính năng của mình, hãy gọi nó là "myfeature" và đẩy nó về nguồn gốc / myfeature
- Những người khác có thể kiểm tra và làm việc với nó
- Đôi khi bạn có thể rebase nó từ master: từ "myfeature", git rebase origin / master ; và sau đó, vâng, bạn phải đẩy nó.
- Điều gì xảy ra khi những người khác muốn đẩy mạnh cam kết của họ? Họ chỉ rebase nó: git rebase origin / myfeature . Vì vậy, bây giờ họ đang tiến nhanh và có thể đẩy nó mà không cần ép buộc.
Nguyên tắc duy nhất để tôn trọng là nhánh tính năng thuộc sở hữu của một ai đó . Chủ sở hữu là người duy nhất có thể đẩy.
Vì vậy, tôi thừa nhận: ngay khi có lực đẩy, có nguy cơ mắc lỗi. Đung. Nhưng cũng có nhiều cách để khắc phục lỗi và thực sự, trong 3 năm phát triển, tôi đã không thấy nhiều sai lầm về lực lượng và khi nó xảy ra, chúng tôi luôn tìm ra cách phục hồi đúng cách.
Vậy, tại sao "Nguyên tắc vàng nổi loạn" này lại được chấp nhận rộng rãi như vậy? Có điều gì khác tôi đã bỏ lỡ với điều đó? Tôi hiểu rằng nó yêu cầu tối thiểu tổ chức (mọi chiến lược đều yêu cầu một số tổ chức), nhưng nó hoạt động.