2011-11-02 30 views
5

Tôi nghĩ mình đã bị git khá đẹp, nhưng tôi hơi bối rối với vấn đề này.Github: đưa chi nhánh phát triển mới vào ngã ba của tôi

Đây là hình ảnh: Tôi chia nhánh 'phát triển' từ một dự án thành repo github của riêng tôi, được nhân bản thành địa phương, tạo ra tính năng git-flow, đã làm công cụ và xuất bản. Tất cả đều tốt.

Trong khi chờ đợi, dự án ban đầu đã thay đổi thành nhánh phát triển mới (gọi nó là 'develop2') để tính năng xuất bản của tôi không thể được đưa vào dự án chính.

Lời khuyên bổ sung - tôi đã tạo nhánh 'develop2' địa phương, xóa nhánh 'phát triển' cục bộ của tôi, kéo 'develop2' từ repo dự án chính, và sau đó hợp nhất với tính năng cục bộ của tôi. Tất cả tốt, EXCEPT ... repo github cá nhân của tôi vẫn có nhánh 'phát triển' cũ và tính năng dựa trên nhánh đó.

Vì vậy, câu hỏi của tôi là tôi phải làm gì bây giờ? Một vài tùy chọn Tôi đã xem xét:

  1. Xóa ngã ba 'phát triển' của tôi trong toàn bộ trên github, ngã ba 'develop2' từ dự án chính, sau đó kéo này để repo địa phương của tôi và hợp nhất, sau đó xuất bản tính năng của tôi một lần nữa và đưa ra yêu cầu kéo. (Không chắc chắn tho: tôi có cần phải sao chép thay vì kéo cái nĩa mới để nó có nguồn gốc chính xác không ..)
  2. Xóa nhánh 'phát triển' về nguồn gốc và đối tượng địa lý, đẩy chi nhánh develop2 mới, và
  3. Lực lượng Đẩy nhánh 'develop2' của tôi vào nguồn gốc phát triển, sau đó đổi tên nó, và làm tương tự với tính năng này.

Nếu có bất cứ điều gì xảy ra, tôi có thể gặp khó khăn khi phải làm lại rất nhiều thứ sẽ là mệt mỏi để nói rằng ít nhất. bất kỳ lời khuyên nào từ rất kinh nghiệm ngoài kia?

Trả lời

3

Bạn hoàn toàn không cần làm lại nội dung - Git được trang bị tốt để giải quyết vấn đề này.

Đầu tiên, dĩa trên GitHub là toàn bộ kho lưu trữ, do đó việc xóa "ngã ba" phát triển "của bạn không thực sự có ý nghĩa gì cả - bạn chỉ cần mang các thay đổi lên trên ngã ba develop2. Tôi đề xuất thêm một điều khiển từ xa có tên là upstream để dễ dàng tìm nạp các thay đổi từ kho lưu trữ mà từ đó tôi chia nhỏ.

Bây giờ giả sử bạn đã thêm upstream, một git fetch sẽ kéo xuống upstream/develop2 vào kho lưu trữ cục bộ của bạn. Tôi sẽ hoàn tác hợp nhất của bạn (có thể là git reset --hard develop~), tạo chi nhánh develop2 từ đó để nhất quán, sau đó rebase các thay đổi develop2 tại địa phương của bạn vào upstream/develop2: git rebase --onto upstream/develop2 upstream/develop develop.

Trước:

   X---Y---Z upstream/develop2 
      /
      |   H---I---J develop, develop2 
      |  /
      | E---F---G upstream/develop 
      |/ 
A---B---C---D 

Sau:

     H'--I'--J' develop2 
        /
       X---Y---Z upstream/develop2 
      /
      |   H---I---J develop 
      |  /
      | E---F---G upstream/develop 
      |/ 
A---B---C---D 
+0

Cảm ơn - Có ý nghĩa. Nhưng tôi nghĩ rằng tôi đã tìm thấy câu trả lời ito. nhận được repo github của tôi phù hợp với địa phương của tôi. Về cơ bản lựa chọn của tôi 2 ở trên nhưng với một chi tiết nhỏ github cần thiết. Trang có tại đây: http://matthew-brett.github.com/pydagogue/gh_delete_master.html Tóm tắt: 1. git push origin develop2 (nhánh dev mới lên tới github repo) 2.Tới github repo, bấm vào 'Admin', thiết lập nhánh mặc định để phát triển2 3. Sau đó, có thể xóa ví dụ nhánh cũ dev. git push origin: phát triển 4. Sau đó, đẩy tính năng lên bình thường. – user1025174

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