Làm thế nào để duy trì một repo git rẽ nhánh với các nhánh tính năng ngược dòng sẽ không kéo?


8

Vì vậy, đây là một quy trình công việc điển hình trên Github ...

  1. Giống như một số dự án ->ngã ba nó -> git clone https://github.com/you/someproject.

  2. Chủ đề mở. Giống như những gì bạn thấy, nhưng thực hiện một số thay đổi.

  3. Đã cẩn thận chỉ làm việc trong một feature-branch( git checkout -b some-feature), bạn quyết định thực hiện yêu cầu kéo với người upstreambảo trì - sau khi đã đẩy bạn feature-branchđến ngã ba Github của bạn.

  4. Bảo trì, vì lý do gì, từ chối kéo.

Ví dụ .. đây là một yêu cầu kéo không thành công mà tôi đã gửi phù hợp với kịch bản trên. ..

Bây giờ thường , nếu nhà duy trì HAD sáp nhập kéo ... công việc sẽ được đơn giản ... Trên máy tính địa phương của tôi, tôi sẽ cam kết bất kỳ thay đổi cục bộ trên bất cứ điều gì feature-branchtôi đang trên vào thời điểm đó ... git fetch --all, git checkout master, git pull upstream --ff-only. Sau đó, phát lại các thay đổi của tôi trên đó, như mong muốn ...

NHƯNG...

Điều gì sẽ xảy ra nếu tôi quyết định rằng bạn muốn tiếp tục thực hiện các thay đổi đối với ngã ba của mình, vô tận ... nhưng vẫn muốn có thể theo dõi + hợp nhất các thay đổi xảy ra upstream? Thông thường, tôi sẽ xóa các chi nhánh tính năng, và đi trên con đường của tôi .. Làm thế nào bạn có thể duy trì một masterchi nhánh có thể được thượng nguồn sáp nhập, nhưng vẫn duy trì các tính năng của ngã ba của bạn trong khi được "vĩnh viễn tách" từ upstream's HEAD?


11
Những thay đổi miễn phí đối với định dạng sẽ không được chấp nhận đối với bất kỳ dự án nào tôi từng nghe đến và nếu bạn khăng khăng giữ chúng trong kho lưu trữ của mình, chào mừng bạn đến với địa ngục hợp nhất cá nhân xứng đáng của bạn. Nếu bạn chỉ dọn dẹp các cảnh báo, rất có thể nó sẽ được chấp nhận, mặc dù bạn vẫn có thể được yêu cầu gửi nó thành các phần có kích thước hợp lý. Ngay cả những thay đổi để làm cho định dạng tự nhất quán có thể được chấp nhận. Nhưng những thay đổi thay đổi định dạng thành khác nhau không bao giờ được. Bởi vì mọi người khác đã quen với định dạng hiện tại và bởi vì nó sẽ gây ra vấn đề với việc hợp nhất.
Jan Hudec

Chỉ dành cho ngữ cảnh, các số liệu thống kê khác nhau của yêu cầu kéo là: "Hiển thị 15 tệp đã thay đổi với 832 bổ sung và 1.478 lần xóa"

2
@Jan Hudec Câu hỏi của tôi là về cách sử dụng các công cụ ... KHÔNG nếu bạn thích yêu cầu kéo của tôi , lol. Cá nhân, tôi không thể đối phó với giấy phép HUGE (trên dự án OSS) ở đầu mỗi tệp F-ing, do đó số lượng lớn xóa .. và các thay đổi khác là thông thường và không làm gì ngoài xóa cảnh báo trình biên dịch và thực hiện mã thực sự có thể đọc được. Bất kể, câu hỏi này là về cách người ta có thể "làm việc khác", mà không được nói "đúng" và "sai" là gì.
alex xám

1
@alexgray: Đó là lý do tại sao tôi không viết nó dưới dạng câu trả lời, mà là nhận xét.
Jan Hudec

Câu trả lời:


6

Bất kể việc sử dụng kịch bản của bạn là gì, đây là cách bạn có thể thực hiện:

  • Master chính xác là phiên bản mà chủ thượng nguồn có
  • tùy chỉnh là nhánh "chính" của riêng bạn, trong đó bạn đã áp dụng các thay đổi định dạng
  • tất cả các nhánh tính năng được phân nhánh tùy chỉnh nếu bạn không muốn chúng bị kéo vào chủ ngược dòng
  • Khi chủ được cập nhật, bạn khởi động lại tùy chỉnh thành chủ và sau đó bạn khởi động lại các nhánh tính năng của mình để tùy chỉnh

Với chiến lược này, nó sẽ làm việc. Nhưng hãy nhớ rằng mọi thay đổi bạn thực hiện trong một nhánh tính năng dựa trên tùy chỉnh sẽ không được chấp nhận thành chủ nhân ngược dòng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.