回答:
git revert <commit>…
n個すべてのコミットに使用でき、履歴を変更せずに通常どおりにプッシュできます。
または、で「ロールバック」できますgit reset --hard HEAD~n
。パブリックリポジトリまたは共有リポジトリをプッシュしている場合、元のブランチに基づいて他の作業を分岐させて中断する可能性があります。Gitはそうすることを防ぎますが、を使用git push -f
して強制的に更新できます。
revert
すると、機能ブランチが「すでに」マージされたものとして扱われることに注意してください。これは、これらのブランチが実際にマージされているためです。しかし、変更は元に戻されました。解決策:コミットをチェリーピックまたは元に戻します。
reset --hard
により、機能ブランチは既にマージされたものとして扱われますか?私の仮定はそうではない(どこにあるrevert
か)。
幸い、私は不要なコミットを完全に削除するPat Notzのソリューションを使用する立場にありました。しかし、最初にエラーが発生しました
error: failed to push some refs to 'ssh://git@gitrepo.git'
To prevent you from losing history, non-fast-forward updates were rejected*
しかし、強制(-f
)オプションを追加すると、このエラーが上書きされます
git push -f origin 52e36b294e:master
リモートリポジトリに直接アクセスできる場合は、いつでも使用できます。
git reset --soft <sha1>
これは、存在しない作業ディレクトリを変更する試みがないため機能します。詳細については、元の回答を参照してください:
git reset --hard [sha1]
コマンドを使用して、特定のコミットにロールバックできます。ここで、sha1はコミットハッシュ識別子です。