2012-06-16 5 views
29

Đây là kịch bản:Làm cách nào bạn có thể thêm cam kết vào yêu cầu kéo github của người khác vào repo nếu bạn không thể cam kết với chi nhánh của họ?

Tôi có repo công khai A. Bob dĩa A, thêm một số cam kết Bob/master và gửi yêu cầu kéo để hợp nhất các thay đổi đó trong A/master. Tôi muốn thực hiện một vài thay đổi đối với yêu cầu kéo được đề xuất trước khi hợp nhất lại thành A/master.

Làm cách nào tôi có thể làm điều đó nếu tôi không thể đẩy đến Bob/master?

Trả lời

16

Có một số quy trình công việc bạn có thể sử dụng tại đây. Một số ví dụ là:

  1. Nhận xét về yêu cầu kéo và yêu cầu Bob thực hiện một số thay đổi. Xem Pull Request Discussion để biết thêm thông tin.

  2. Hợp nhất yêu cầu kéo vào chi nhánh khác nhau, sau đó thực hiện thay đổi của bạn trước khi hợp nhất thành chính. Bạn cần thực hiện điều này từ dòng lệnh; xem Merging a Pull Request để biết hướng dẫn từng bước.

  3. Chỉnh sửa bản vá trước khi áp dụng bản vá với git am. Xem Patch and Apply. Đây có lẽ là tùy chọn linh hoạt nhất, nhưng cũng là hướng dẫn sử dụng nhiều nhất.

    git checkout master 
    curl http://github.com/<username>/<project_name>/pull/<patch_number>.patch 
    sensible-editor <patchfile> 
    git am <patchfile> 
    git push origin master 
    
+0

Không có lý tưởng, nhưng công trình, tôi đặc biệt thích tùy chọn 1. Với tùy chọn 3, tôi sẽ lấy tín dụng cho cam kết của Bob, phải không? –

+0

Câu hỏi tiếp theo được chuyển đến đây: http://stackoverflow.com/questions/11066980/who-gets-credit-for-a-hand-edited-patch-file –

+0

Để biết thêm các thay đổi có liên quan, không cần chỉnh sửa bản vá bằng tay. Sau khi áp dụng các bản vá với 'git am' bạn có thể chỉnh sửa các tập tin repo trực tiếp và sau đó cam kết chúng với cờ' --amend'. – Pete

2

Bạn chỉ có thể kéo từ chi nhánh của mình trên repo địa phương của bạn (không phải bên trong gui github)

# make same work-in-progress branch and check it out 
$ git checkout -b WIP 

# pull his changes into WIP 
$ git pull https://github.com/... master 

và sau đó không thương tiếc thay đổi từ đó về.

Tùy chọn khác sẽ là sử dụng hệ thống nhận xét của github để nói chuyện với anh ta về việc thay đổi bản vá của anh ấy (theo cách đó anh ấy cũng có thể giữ tín dụng sau khi hợp nhất).

+7

Không có cách nào mà cả hai chúng tôi có thể giữ tín dụng? một cách để các cam kết của anh ấy và tôi xuất hiện được liệt kê theo yêu cầu kéo ... –

+0

Nếu bạn thực hiện các cam kết và sau đó hợp nhất các cam kết của mình, không phải tất cả các cam kết đều được giữ nguyên từ góc độ tín dụng? – gregturn

+0

@gregturn: Nếu bạn thay đổi cam kết, tác giả sẽ được thay đổi, nhưng vẫn giữ nguyên giá trị ban đầu nếu bạn chỉ chọn cam kết. –

2

Một giải pháp là để thực hiện một PR vào Bob/master chứa các phiên bản của bạn. Bob có thể hợp nhất PR của bạn thành Bob/master; khi bạn hợp nhất PR của Bob thành A/master, nó sẽ chứa các cam kết của Bob và các cam kết của bạn.

Bạn có thể tạo PR từ bất kỳ nhánh/nhánh nào cho bất kỳ nhánh/nhánh nào khác. Vì vậy, nếu Bob gửi PR từ Bob/feature, chỉ cần tạo PR vào Bob/feature.