GitHub: Mở lại một yêu cầu kéo đã hợp nhất


101
  • Tôi đã thực hiện một số thay đổi
  • Tôi đã gửi một yêu cầu kéo
  • Yêu cầu kéo đã được chấp nhận và hợp nhất.
  • Chúng tôi đã tìm thấy một lỗi
  • Các thay đổi lại bị xóa trong khi tôi sửa lỗi.

Bây giờ tôi đã sửa lỗi và muốn gửi lại yêu cầu kéo với 1 lần cam kết bổ sung. Có cách nào để mở lại yêu cầu kéo hoặc cập nhật nó không, hoặc tôi phải tạo một yêu cầu kéo mới, nhập lại mô tả, v.v.? Gitorious có tính năng này và gần đây chúng tôi đã chuyển sang GitHub.


Tôi đã ở trong tình huống tương tự ngày hôm nay, tức là đã sử dụng nút "Merge Pull Request" theo mặc định hợp nhất các thay đổi vào nhánh mục tiêu và đóng PR. Sau đó, tôi đã phát hiện ra một lỗi trong quá trình thử nghiệm mà tôi muốn nhà phát triển ban đầu sửa. Tôi muốn có một cách để mở lại PR này để có thể thêm nhiều cam kết hơn vào cùng một PR này nhưng không thể vì không có nút để mở lại PR.
SBirthare

Câu trả lời:


114

Câu trả lời dường như là: Bạn không thể.

Khi một yêu cầu kéo được hợp nhất và đóng, nó sẽ bị khóa vĩnh viễn và không thể mở lại. Nếu yêu cầu kéo của bạn được hợp nhất, bị đóng, sau đó các thay đổi của bạn được kéo ra (thông qua lực đẩy ngược về trước khi hợp nhất), bạn sẽ cần thêm các cam kết vào nhánh và tạo một yêu cầu kéo mới, sao chép tất cả các chi tiết và có thể cung cấp liên kết đến yêu cầu kéo ban đầu để lưu lịch sử theo cách thủ công.

Có thể là một yêu cầu tính năng hay cho GitHub trong tương lai.


8
Tôi không biết nó đã được thay đổi khi nào, nhưng bạn có thể nhận xét và mở lại các PR đã đóng ngay bây giờ.
LB--

16
@LB, có vẻ như bạn không thể mở lại các PR đã bị đóng và hợp nhất .
A Kaptur

1
Bạn thực sự có thể. Giả sử rằng bạn đã hoàn nguyên việc hợp nhất ban đầu, bạn có thể tạo một nhánh của repo chính và trên nhánh mới này chỉ cần hoàn nguyên cam kết đang hoàn nguyên việc hợp nhất.
SsjCosty

7
@SsjCosty Nhưng điều đó không mở lại PR đã đóng và hợp nhất. Bạn luôn có thể mở các yêu cầu kéo mới, đó là những gì giải pháp của bạn yêu cầu.
Adam Grant

1
"Có thể là một yêu cầu tính năng hay cho GitHub trong tương lai." Trên thực tế, không, nó sẽ không. Nếu PR có thể được xác định lại sau khi tạo, thì mọi người kiểm tra PR vào những thời điểm khác nhau, có khả năng sẽ bị trôi dạt. Chỉ cần tạo một bài PR khác và "đề cập" đến bài viết trước trong văn bản. Nếu bạn muốn tham khảo một số loại cột mốc quan trọng, thì đó không phải là PR để xem xét, đó sẽ là các thẻ.
Scott Prive

12

Tôi vừa mở lại thành công một yêu cầu kéo bằng

  1. Nhận xét về yêu cầu kéo
  2. Nhấp vào nút 'Gửi và mở lại' xuất hiện trên biểu mẫu nhận xét.

1
Tôi chưa thể tái tạo điều này - bạn có thể giải thích các bước cần thiết để xem hành vi này không? Tôi đã thử nhận xét về một yêu cầu kéo đã đóng (không hoạt động), nhận xét về một yêu cầu kéo đã đóng và đẩy đến nhánh mà nó đang kéo vào (không hoạt động). Còn gì để thử không? Yêu cầu kéo có bắt buộc phải được hợp nhất rồi sau đó không được hợp nhất bằng cách nào đó không?
Michael Parker

Tôi không biết yêu cầu ẩn tạo ra sự khác biệt là gì. Có thể là bất kỳ (có gửi thay đổi mới cho yêu cầu kéo, là thành viên của chủ dự án, khác ...)
Tim Lovell-Smith

1
Bây giờ tôi đã thử tất cả mọi thứ bạn đề cập, vẫn không thấy nó. Tôi là chủ sở hữu repo. Tìm kiếm trên google cho "Gửi và mở lại GitHub" cung cấp một lần truy cập duy nhất - trang này. Bất kỳ thông tin nào khác sẽ cực kỳ hữu ích. Yêu cầu kéo của bạn ban đầu có bị từ chối không?
Michael Parker

52
Tôi có thể sao chép điều này với các yêu cầu kéo không hợp nhất - nhưng đó không phải là chủ đề này.
Dan Tello

2
Vâng, anh ấy đang đề cập đến việc kéo đóng, không phải kéo hợp nhất.
loujaybee

4

Chỉ cần dẫn xuất một nhánh mới từ nhánh hiện tại mà bạn đã thực hiện thêm 1 lần cam kết. Từ đó gửi yêu cầu kéo.


3
Điều đó sẽ dẫn đến một yêu cầu kéo mới không có lịch sử cho bản gốc.
Dave

1
Đây là những gì tôi đã kết thúc. Có, lịch sử ít tuyến tính hơn nhưng nó là ok đối với tôi.
Possen

4

Bạn có thể sử dụng hành động hoàn nguyên:

nhập mô tả hình ảnh ở đây

Nó sẽ tạo ra một yêu cầu kéo khác hoàn tác tất cả các thay đổi đã thực hiện trong PR đã hợp nhất.


Đây không phải là thực hành tốt nhất :)
antonbormotov

2
@antonbormotov bạn có thể đề xuất cách tiếp cận tốt hơn không?
William Weckl

Giả sử, chúng tôi đã hợp nhất pr với các cam kết (mA và mB) vào nhánh ổn định mà chúng tôi muốn hoàn nguyên. Sau khi hợp nhất pr "hoàn nguyên", lịch sử sẽ giống như cây cam kết: XY-mA-mB-CD-rA-rB-EF. Tại sao bạn muốn xem tất cả các cam kết này trong lịch sử, áp dụng các thay đổi (mA, mB) và sau đó hủy chúng (rA, rB)? Sẽ tốt hơn nếu bạn rebase và xóa các commit "xấu" đó mA và mB khỏi nhánh ổn định và giữ lịch sử trong sạch. Tất nhiên, nó có ý nghĩa nếu hợp nhất là tương đối gần đây.
antonbormotov

1
Lịch sử không chỉ trông xấu đi, bạn cũng không còn có thể đơn giản hợp nhất các cam kết đã hoàn nguyên trở lại khi bạn đã sẵn sàng.
Michael

Tôi đã có một kịch bản tương tự với sự khác biệt nhỏ. Tôi đã có một PR mà tôi cần xem xét lại và phải đợi một PR khác được hợp nhất. Nhưng tôi đã không nhìn thấy nó và sáp nhập PR này quá sớm. Tôi thực sự đã làm những gì @WilliamWeckl đề xuất. Nhưng bây giờ tôi muốn tạo cùng một bài PR với những thay đổi giống như ban đầu. Nhưng khi tôi tạo PR, nhánh chính không có gì khác biệt, mặc dù khi tôi xem các tệp riêng lẻ, chúng khác nhau. Có suy nghĩ gì không?
Vikas
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.