2015-12-14 12 views
6

Chúng tôi đã chuyển 9 năm CVS CVS repo sang Git bằng cvs2git. Trong khoảng thời gian chúng tôi đã kết thúc rời khỏi thân cây (trong thế giới cvs) phía sau và thực hiện một trong những ngành như sản xuất (prod_br). Không có nhiều người như thế này nhưng quá khứ là quá khứ :)Sự khác biệt giữa "đổi tên nhánh git thành master" và "sáp nhập nhánh thành master với tùy chọn -s của chúng tôi" là gì?

Bây giờ chúng ta đã chuyển đổi nó để Git chúng tôi có hai lựa chọn (dựa trên phản ứng trước trên stackoverflow):

  1. Move những thay đổi trong ngành sản xuất (prod_br) để làm chủ và bắt đầu mới với chủ mới và tiếp tục. (git checkout prod_br, git merge -s chủ của chúng tôi, git checkout master, git merge prod_br)

  2. Đổi tên prod_br thành thạo và tiếp tục từ đây. (git branch -m prod_br master)

Sự khác biệt giữa hai phương pháp trên là gì? Bất kỳ ưu/khuyết điểm nào.

Chúng tôi cũng có tùy chọn thứ ba: Giữ nguyên bản gốc hiện tại và tiếp tục xây dựng trên đầu trang của prod_br. Đây là loại sống trên một repo với một bậc thầy mà sẽ không bao giờ được sử dụng trong tương lai. Điều này cũng giống như prod_br là "bậc thầy logic của chúng tôi". Có bất kỳ bất lợi của việc có một repo với một bậc thầy mà sẽ không bao giờ được sử dụng như một bậc thầy?

Bất kỳ trợ giúp/hướng dẫn nào được đánh giá cao.

+0

Trong tùy chọn đầu tiên của bạn, bạn nói về việc hợp nhất 'master' thành' prod_br' _before_ mergeing 'prod_br' trở lại thành' master' và tiếp tục từ đó. Điều đó có nghĩa là có thể có các cam kết trong 'master' bị bỏ sót bị thiếu trong' prod_br'? –

Trả lời

3

Sự khác nhau giữa hai phương pháp trên là gì?

Cách tiếp cận đầu tiên có khả năng sẽ tạo ra một cam kết hợp nhất sẽ là tốt từ một quan điểm lịch sử, vì nó sẽ rõ ràng khi di chuyển đến chủ xảy ra.

Khi bạn làm merge trở lại để làm chủ, như một thực hành tốt nhất để đảm bảo việc hợp nhất cam kết bạn có thể muốn sử dụng --no-ff (không nhanh về phía trước) tùy chọn:

git merge --no-ff prod_br 

Đối với thứ hai tùy chọn, đổi tên nhánh sẽ hoạt động nhưng không tự tài liệu giống như cam kết hợp nhất và quan trọng hơn là khiến bạn cần phải đẩy mạnh thay đổi có thể làm gián đoạn người dùng khác. (họ sẽ cần phải làm một rebase hoặc hoạt động khác để có được phiên bản của họ về chi nhánh để có thể truy cập một lần nữa với điều khiển từ xa)

Có bất kỳ bất lợi của việc có một repo với một bậc thầy mà sẽ không bao giờ được sử dụng như một bậc thầy?

Không thực sự bất kỳ sự thật bất lợi nhưng trong Git quy ước là phải có chính, chi nhánh sản xuất của bạn được master. Vì vậy, nếu bạn sử dụng master kho lưu trữ của bạn sẽ có vẻ tiêu chuẩn hơn cho những người khác tham gia dự án. Ngoài ra, khi họ sao chép theo mặc định, chúng sẽ được đặt ngay trên chính (chặn tùy chọn --branch) vì vậy nó sẽ là một bước ít hơn để ghi nhớ (chuyển sang nhánh sản xuất đặc biệt).

IMO hoạt động quan trọng như thế này yêu cầu cam kết hợp nhất tự ghi tài liệu để Tôi nghĩ tùy chọn 1 là cách tiếp cận tốt nhất.

+3

'git branch -m' thực sự đổi tên nhánh. Nếu chi nhánh X của bạn được lưu trữ trong một tệp riêng lẻ (hiện tại có hai tùy chọn, tệp riêng lẻ hoặc tệp refs "đóng gói"; git chuyển giữa chúng vô hình cho bạn; tôi đang sử dụng tệp riêng lẻ để minh hoạ vì đơn giản hơn), đổi tên X to Y chỉ cần đổi tên tệp '.git/refs/heads/X' thành' .git/refs/heads/Y'. Bây giờ bạn có một nhánh Y thay vì một nhánh X, trỏ đến cùng một cam kết như trước đây. – torek

+0

@torek Ah, cảm ơn, không biết về tùy chọn đó. Tôi đã chỉnh sửa câu trả lời của tôi để phản ánh nhận xét của bạn –

Các vấn đề liên quan