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_HEAD
git reset --hard
git status
git reflog
ORIG_HEAD
git show ORIG_HEAD
トラブルシューティング:
「 ! [リモート拒否] a60f7d85 -> マスター (受信前フックが拒否されました)」のようなメッセージが表示される場合
特定のブランチのブランチ履歴の書き換えを許可する必要があります。たとえば、BitBucket では、「ブランチ履歴の書き換えは許可されていません」と表示されますAllow rewriting branch history
。チェックする必要があるチェックボックスがあります。