web-dev-qa-db-ja.com

Git差し込みの差し戻し

機能ブランチを作成しました。たとえば、feature/branch1 githubに。私はそれのプルリクエストを作成し、それをマージしました。 Initial PR Merge Commit

パイプラインに到達したとき、問題があると判断し、Gitの[元に戻す]ボタンを使用して元に戻しました。これにより、「元に戻す」PRが作成され、マスターとマージされ、すべてが順調でした。 Reverted Merge Commit

数週間後、マスターに統合された他のPRを投稿しました。revert-the-revert今回は、閉じられた「元に戻す」PRに入り、「元に戻す」ボタンをもう一度使用しようとしました。しかし、私たちはこのエラーメッセージを受け取りました

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.

どうすれば元に戻すことができますか?

私が望む最も理想的な状況は、revertの(== --- ==)revertを含む新しいブランチを用意することです。 PRプロセスに戻ります。

10
Serendipity

あなたが見るエラーは私が個人的に不要だと思っているgithubの人工的なチェックです。ローカルで元に戻すことができます:

git fetch Origin master
git checkout Origin/master (or reset)
git revert <REVERT HASH>
git Push Origin master

これは成功するはずです。モジュロは、復帰以降に行われた変更と競合します。

PS:実際には、エラーは競合が原因である可能性があります。

14
max630

あなたが試すことができるものは:

  • リセット(git reset --hard old_commit)元に戻したいコミットへのPRブランチ(元に戻されたもの)
  • 強制プッシュ(git Push --force)そのブランチ:PRを更新します

このようにして、PRは古いコミットで再度実行されます。

これはマージコミットです。 PRはすでに閉鎖され、統合されています。

その場合、その古いPRブランチをフェッチすると、次のことができます。

  • git logその上(git log Origin/old_pr_branch
  • 現在必要なコンテンツを表す、古いSHA1コミットからの新しいブランチ

    git checkout -b new_pr_branch old_sha1
    
  • 原点へのプッシュ

    git Push -u Origin new_pr_branch

その後、適切なコンテンツを使用して、その新しいブランチから新しいPRを作成できます。

1
VonC