リモートを特定のコミットにリセットする 質問する

リモートを特定のコミットにリセットする 質問する

commit 後に行われたすべての変更を破棄したいので<commit-hash>、次のようにしました。

git reset --hard <commit-hash>

今、リモートで同じことをやりたいです。どうすればいいですか? その後、いくつかのコミット (およびプッシュ) を実行しました<commit-hash>が、それらをすべて破棄したいだけです。途中で何かひどい間違いが起こっただけで、これ以上悪化させたくありません。;(

origin/master私は基本的に私の過去を巻き戻したい<commit-hash>

ベストアンサー1

ブランチがmasterこことリモートの両方で呼び出され、リモートが呼び出されると仮定するとorigin、次の操作を実行できます。

 git reset --hard <commit-hash>
 git push -f origin master

ただし、他の誰かがリモートリポジトリで作業していて、変更をプルしている場合は、これを避ける必要があります。その場合は、元に戻す不要なコミットを削除し、通常どおりプッシュします。

更新:他の人があなたがプッシュした変更をプルしたので、それらの変更をすべて元に戻す新しいコミットを作成した方が良いと以下に説明されています。これを行うためのオプションについては、Jakub Narębskiからの回答どれが最も便利かは、元に戻したいコミットの数と、どの方法が最も合理的かによって異なります。

質問から、ブランチをgit reset --hardリセットするために既に を使用していることは明らかなので、まず を使用してブランチを以前の場所に戻すmaster必要があるかもしれません。( を使用する場合は、常にがクリーンであること、正しいブランチにいること、および が明らかに失われたコミットを回復するためのツールであることを認識していることを確認してください。) また、が正しいコミットを指していることも確認する必要があります。git reset --hard ORIG_HEADgit reset --hardgit statusgit reflogORIG_HEADgit show ORIG_HEAD

トラブルシューティング:

「 ! [リモート拒否] a60f7d85 -> マスター (受信前フックが拒否されました)」のようなメッセージが表示される場合

特定のブランチのブランチ履歴の書き換えを許可する必要があります。たとえば、BitBucket では、「ブランチ履歴の書き換えは許可されていません」と表示されますAllow rewriting branch history。チェックする必要があるチェックボックスがあります。

おすすめ記事