2017-04-05 24 views
5

Tôi đã tạo một chi nhánh tính năng, giả sử feature/branch1 trên github. Tôi đã tạo một yêu cầu kéo cho nó và nhận nó sáp nhập. Initial PR Merge CommitGit Hoàn nguyên Hoàn nguyên cho Hợp nhất

Khi nó đạt đến đường ống dẫn của chúng tôi, chúng tôi đã tìm có một vấn đề và chúng tôi đã nhận nó quay trở bằng cách sử dụng nút Revert trên Git này đã tạo ra một "Revert" PR mà chúng ta sáp nhập với các bậc thầy và tất cả là tốt. Reverted Merge Commit

Sau một vài tuần, PRs bài khác mà đã sáp nhập vào tổng thể, chúng tôi đã tìm chúng tôi sẽ Revert-the-trở. Lần này, chúng tôi đã đi vào PR hoàn nguyên đã bị đóng và cố gắng sử dụng nút Hoàn nguyên lần nữa. Nhưng chúng tôi nhận được thông báo lỗi này

Sorry, this pull request couldn’t be reverted automatically. 
It may have already been reverted, or the content may have changed since it was merged. 

Làm cách nào để hoàn tác việc này?

Tình huống lý tưởng nhất tôi muốn có, là có một chi nhánh mới có chứa hoàn nguyên của hoàn nguyên, vì vậy tôi có thể thực hiện thêm thay đổi và quay lại quy trình PR.

+0

bạn đã sử dụng công cụ nào để hoàn nguyên? Tôi nghiêm túc nghi ngờ git chính nó sẽ in nó – max630

+0

Nút 'revert' này là một tính năng trên github. – Serendipity

Trả lời

4

Lỗi mà bạn thấy là kiểm tra nhân tạo github mà cá nhân tôi thấy không cần thiết. Bạn có thể hoàn nguyên cục bộ sau đó:

git fetch origin master 
git checkout origin/master (or reset) 
git revert <REVERT HASH> 
git push origin master 

Điều này sẽ thành công, modulo xung đột với các thay đổi được thực hiện kể từ khi hoàn nguyên.

PS: thực ra, lỗi có thể là do xung đột.

+0

Lỗi thực sự là do xung đột. Mặc dù github không thực sự cung cấp nhiều thông tin. – Serendipity

0

gì bạn có thể thử là:

  • reset (git reset --hard old_commit) mà PR chi nhánh để cam kết mà bạn muốn trở lại (một trong đó đã quay trở)
  • lực đẩy (git push --force) chi nhánh: đó sẽ cập nhật PR

Bằng cách đó, PR được thực hiện lại với cam kết cũ.

Đây là cam kết hợp nhất. PR đã được đóng và hợp nhất.

Trong trường hợp đó, nếu bạn có lấy mà chi nhánh PR cũ, bạn có thể làm:

  • một git log vào nó (git log origin/old_pr_branch)
  • một chi nhánh mới từ SHA1 cũ cam kết đại diện cho content bây giờ bạn muốn

    git checkout -b new_pr_branch old_sha1 
    
  • một push to gốc

    git push -u gốc new_pr_branch

Sau đó, bạn có thể làm cho một PR mới từ đó chi nhánh mới, với nội dung đúng.

+0

Tôi sẽ cần thêm thông tin tại đây. Đây là một cam kết hợp nhất. PR đã được đóng và hợp nhất. Tôi đọc nó là không thể mở lại một PR đóng cửa. Tôi có đọc sai câu trả lời của bạn không? – Serendipity

+0

@Serendipity Tôi không nhận được rằng PR đã bị đóng. Bạn vẫn có quyền truy cập vào chi nhánh PR không? Ý tưởng sẽ là tạo một nhánh mới dựa trên cam kết cũ (cái đã được hoàn nguyên, nhưng bây giờ bạn muốn) và tạo một PR mới từ nhánh mới đó. – VonC

+0

Tôi có quyền truy cập vào chi nhánh PR, vâng. Tuy nhiên, cách tôi đọc câu trả lời của bạn, có vẻ như để cập nhật chi nhánh PR hiện tại – Serendipity

Các vấn đề liên quan