Cách sửa đổi yêu cầu kéo Github


163

Tôi đã mở một yêu cầu kéo cho một dự án. Người bảo trì đã quyết định chấp nhận nó, nhưng bảo tôi sửa đổi một số nội dung.

Tôi làm nó như thế nào? Cho dù tôi có nên giữ băm cam kết không thay đổi, làm thế nào tôi có thể làm điều đó?


Câu trả lời:


178

chỉ cần đẩy thêm cam kết vào chi nhánh yêu cầu là cho. Yêu cầu kéo sẽ chọn điều này sau đó

Thí dụ:

Nếu bạn muốn b sáp nhập vào chủ

  1. Bạn đẩy c1, c2, c3 lên b
  2. sau đó bạn thực hiện một yêu cầu mới cho b
  3. nó được xem xét và bạn cần nhiều cam kết hơn
  4. Bạn đẩy c11, c21, c31 lên b
  5. Yêu cầu kéo hiện hiển thị tất cả 6 sáu cam kết

6
Có thể thêm cam kết vào yêu cầu kéo này bởi người khác, ngoại trừ tác giả của yêu cầu kéo này?
skywinder

4
tất cả những người đẩy đến chi nhánh cụ thể
Daij-Djan

@ Daij-Djan rất thường xuyên nếu ai đó thực hiện Yêu cầu Kéo, anh ta đẩy đến ngã ba của chính kho lưu trữ của mình. Có thể thêm các cam kết vào một PR như vậy bởi những người không có quyền truy cập vào ngã ba của mình?
Maciek oziński


@ MaciekŁoziński câu trả lời cũng chỉ khi "bạn [có thể] đẩy đến chi nhánh cụ thể" :)
Daij-Djan

34

Tôi chỉ có một cam kết trong một yêu cầu kéo và tôi đã từng git commit --amendcập nhật nó. Sau đó, tôi đã thực hiện một động lực mạnh mẽ git push -fđể cam kết sửa đổi của tôi thay thế cho cam kết ban đầu. Yêu cầu kéo tự động chọn cam kết mới. (Nó thực sự hiển thị cả hai lần xác nhận, nhưng khi tôi tải lại trang thì cam kết cũ đã biến mất.)

Vì vậy, trong khi một lực đẩy bắt buộc thường không được khuyến nghị, nó có thể hữu ích cho các yêu cầu kéo. Điều đó không được khuyến khích bởi vì nếu ai đó đặt một cam kết lên trên bạn thì họ sẽ phải thực hiện một cuộc nổi loạn sau khi bạn thay đổi. Nhưng vì không ai nên căn cứ vào công việc của họ theo yêu cầu kéo đánh giá thấp, nên nó khá an toàn trong tình huống này.


8

Nếu bạn tiếp tục thực hiện các thay đổi và tiếp tục đẩy đến cùng một nhánh, các cam kết được tinh chỉnh sẽ được thêm vào cùng một yêu cầu kéo (trừ khi yêu cầu kéo của bạn đã được hợp nhất). Điều này có thể làm cho lịch sử rất lộn xộn.

Một giải pháp thay thế và một kỹ thuật mà tôi sử dụng như sau:

  1. Tạo một nhánh mới (sửa lỗi) từ kho lưu trữ (ngược dòng) và nhánh (phát triển) mà bạn dự định gửi yêu cầu kéo bằng cách thực hiện:

    chi nhánh git sửa chữa ngược dòng / phát triển

  2. Thêm các cam kết tinh chế của bạn trực tiếp vào chi nhánh mới được tạo này.

    git commit -m "tin nhắn của bạn"

  3. Đẩy nhánh này vào điều khiển rẽ nhánh của riêng bạn (có thể được đặt tên gốc).

  4. So sánh và gửi một yêu cầu kéo mới với lịch sử cam kết sạch.
  5. Ngoài ra, nên xóa chi nhánh của bạn sau khi yêu cầu kéo đã được hợp nhất.
  6. Và bạn có thể bình luận và đóng các yêu cầu kéo trước đó của bạn.

1

Bạn cũng có thể sử dụng github api .

ví dụ với curl

curl --user "your_github_username" \
     --request PATCH \
     --data '{"title":"newtitle","body":"newbody",...}' \
     https://api.github.com/repos/:owner/:repo/pulls/:number

bạn có thể tìm thấy danh sách dữ liệu bị mất trong tài liệu của nhà phát triển github

ví dụ: thay đổi tên của yêu cầu kéo của tôi

curl --user "jeremyclement" \
     --request PATCH \
     --data '{"title":"allows the control of files and folders permissions."}' \
     https://api.github.com/repos/Gregwar/Cache/pulls/9

Tôi đã cố gắng thay đổi chi nhánh nhưng tôi nghĩ head/labelhead/refkhông thể chỉnh sửa.
hexaJer
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.