Yêu cầu kéo mà không cần fork?


105

Dưới đây là các bước đóng góp mã từ chủ đề " Làm cách nào để đóng góp mã cho người khác trong GitHub? "

  1. Fork dự án
  2. Thực hiện một hoặc nhiều nhận xét tốt và cam kết sạch đối với kho lưu trữ. Bạn có thể tạo một nhánh mới tại đây nếu bạn đang sửa đổi nhiều hơn một phần hoặc tính năng.
  3. Thực hiện yêu cầu kéo trong giao diện web của github.

Có thể thực hiện một yêu cầu kéo mà không cần thực hiện repo không?

Thật buồn khi thấy hơn 20 repo trong tài khoản của tôi đã bị chia nhỏ cho một số yêu cầu kéo. Sau đó họ không có hoạt động nào và không có sao / người theo dõi. Có vẻ như tôi chỉ đang sao chép mã của ai đó cho một ngày đen đủi.


Tại sao bạn sẽ muốn?

3
Câu hỏi hay. Việc cập nhật 20 bản repo đó cũng không rõ ràng với bản gốc (hoặc xóa chúng).
Corey Alix

Câu trả lời:


95

Nếu bạn không có quyền truy cập để tạo các nhánh trên kho lưu trữ đó, không có cách nào để tạo một yêu cầu kéo mà không cần chia nhánh .


8
Bạn có thể vui lòng giải thích cách bạn có thể tạo một yêu cầu kéo nếu bạn CÓ quyền truy cập vào các chi nhánh trên kho lưu trữ đó không?
bolinfest

13
GitHub có một hướng dẫn tốt về điều đó: help.github.com/articles/creating-a-pull-request
Ryan Bigg

2
Chỉ là một lời nhắc nhở cho một cái gì đó có thể không rõ ràng cho tất cả mọi người. Bạn cần tạo một nhánh rẽ cho mọi kho lưu trữ mà bạn đóng góp vào ... nhưng việc tạo các nhánh trong nhánh rẽ của bạn cho phép bạn thực hiện nhiều hơn một PR cùng một lúc cho kho lưu trữ ngược dòng. Bạn không cần 20 fork từ cùng một repo để đóng góp với 20 PR.
JulioHM

24

Khi các yêu cầu kéo của bạn được chấp nhận, bạn có thể xóa repo một cách an toàn .

Sau đó, chỉ cần sao chép trực tiếp từ repo ngược dòng ban đầu.

Nếu bạn có các yêu cầu kéo khác cần thực hiện, thì bạn nên tạo chúng trong nhánh tương ứng của riêng họ, có nghĩa là bạn có thể xóa nhánh bạn đã thực hiện một cách an toàn để quản lý một yêu cầu kéo được chấp nhận (như trong " Yêu cầu kéo của tôi đã được hợp nhất, phải làm gì tiếp theo? ")


2
FYI, github gần đây đã thêm một nút để hợp nhất các yêu cầu kéo để giúp bạn dễ dàng (và trực quan) xóa nhánh yêu cầu kéo: github.com/blog/1335-tidying-up- After
David M

10

Theo định nghĩa, một yêu cầu kéo liên quan đến một nhánh rẽ trừ khi bạn có quyền truy cập cam kết vào kho lưu trữ đích. Tuy nhiên, bạn có thể làm một số điều:

  1. Nếu bạn làm có cam kết truy cập, tạo ra một chi nhánh và thực hiện yêu cầu kéo của bạn chống lại các chi nhánh mới.
  2. Đăng bản vá của bạn trong nội dung của một vấn đề. Đây thực sự không phải là cách GitHub, nhưng nó chắc chắn hoạt động.
  3. Fork một kho lưu trữ, tạo một yêu cầu pull và sau đó xóa fork khi yêu cầu pull được hợp nhất hoặc bị từ chối.

Nếu bạn chỉ đang cố gắng tránh giữ các kho lưu trữ mà bạn không tích cực sử dụng, cá nhân tôi đề xuất tùy chọn số 3. Nó tuân theo quy trình làm việc GitHub được chấp nhận mà không làm lộn xộn trang tổng quan của bạn.


Có lẽ tốt nhất nên đặt ở đây: 4. Duy trì tài khoản Github thứ hai chỉ để đối phó với các tình huống kéo-yêu cầu-và-quên này. Sẽ không thành vấn đề nếu tài khoản đó có 20 đại diện không hoạt động trong đó, vì nó không phải là tài khoản chính.
tanius

7

github hỗ trợ Mô hình kho lưu trữ được chia sẻ

Mô hình Kho lưu trữ Dùng chung phổ biến hơn với các nhóm và tổ chức nhỏ cộng tác trong các dự án tư nhân. Mọi người đều được cấp quyền truy cập đẩy vào một kho lưu trữ được chia sẻ duy nhất và các nhánh chủ đề được sử dụng để cô lập các thay đổi.

Các yêu cầu kéo đặc biệt hữu ích trong Mô hình Fork & Pull vì chúng cung cấp cách thông báo cho những người duy trì dự án về những thay đổi trong fork của bạn. Tuy nhiên, chúng cũng hữu ích trong Mô hình kho lưu trữ được chia sẻ nơi chúng được sử dụng để bắt đầu xem xét mã và thảo luận chung về một tập hợp các thay đổi trước khi được hợp nhất vào một nhánh dòng chính.


5
Lưu ý cách này không giải thích cách tạo một yêu cầu kéo trong mô hình này.
bolinfest

0

Bạn vẫn cần một lớp lót đó: hub fork;git push -u $GIT_USER HEAD;hub pull-request

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.