272

私はgit commit続いて実行しましたgit push。ローカルリポジトリとリモートリポジトリの両方でその変更を元に戻すにはどうすればよいですか?

$ git log
commit 364705c23011b0fc6a7ca2d80c86cef4a7c4db7ac8
Author: Michael Silver <Michael Silver@gmail.com>
Date:   Tue Jun 11 12:24:23 2011 -0700
4

7 に答える 7

458
git reset --hard HEAD~1
git push -f <remote> <branch>

(プッシュの例 git push -f origin bugfix/bug123:)

これにより、最後のコミットが取り消され、更新された履歴がリモートにプッシュされます。-fリモートのアップストリーム履歴を置き換えるため、を渡す必要があります。

于 2011-06-23T18:51:58.733 に答える
186

通常、以下を使用して「逆」コミットを行います。

git revert 364705c

次に、通常どおりリモートに送信します。

git push

これはコミットを削除しません。最初のコミットが行ったことを元に戻す追加のコミットを作成します。特に変更がすでに伝播されている場合は、特に安全ではありません。

于 2011-06-23T18:50:55.723 に答える
51

まず、リラックスしてください。

「私たちの支配下にあるものは何もありません。私たちの支配は単なる幻想です。」、「誤りを犯すのは人間です」

意図せずにコードをにプッシュしたようですremote-master。これは大丈夫です。

1.最初に、SHA-1返そうとしているコミットの値を取得します。たとえば、マスターブランチへのコミットなどです。これを実行します:

git log

各コミットとともに、文字列のような「f650a9e398ad9ca606b25513bd​​4af9fe...」の束が表示されます。戻したいコミットからその番号をコピーします。

2.次に、以下のコマンドを入力します。

git reset --hard your_that_copied_string_but_without_quote_mark

「HEADisnowat」のようなメッセージが表示されるはずです。あなたは明確です。その変更をローカルに反映するだけです。

3.次に、以下のコマンドを入力します。

git push -f

あなたは次のように見えるはずです

"警告:push.defaultは設定されていません;その暗黙の値はで変更されました..... ...合計0(デルタ0)、再利用0(デルタ0)... ... your_branch_name->マスター(強制更新) 。」

今、あなたはすべて明確です。もう一度「gitlog」でマスターを確認してください。fixed_destination_commitがリストの一番上にあるはずです。

どういたしまして(事前に;))

アップデート:

これで、これらすべてが始まる前に行った変更はなくなりました。 それらの努力を再び取り戻したいのであれば、それは可能です。gitreflogとgitcherry -pickコマンドに感謝します。

そのためには、このブログまたはこの投稿をフォローすることをお勧めします。

于 2015-01-05T16:17:47.937 に答える
10

git reset HEAD~1変更を削除したくない場合(ステージングされていない変更)。変更し、コミットして、もう一度プッシュしますgit push -f [origin] [branch]

于 2014-06-25T13:42:43.330 に答える
4

使ってみてください

git reset --hard <commit id> 

注意:ここで、コミットIDは、移動したいコミットのIDになりますが、リセットしたいIDにはなりません。これは私も行き詰まった唯一のポイントでした。

次にプッシュ

git push -f <remote> <branch>
于 2016-02-01T10:07:15.163 に答える
3

インタラクティブなリベースを行うことができます:

git rebase -i <commit>

これにより、デフォルトのエディタが表示されます。削除するコミットを含む行を削除するだけで、そのコミットを削除できます。

もちろん、この変更をそこにも適用するには、リモートリポジトリにアクセスする必要があります。

この質問を参照してください:Git:リポジトリから選択したコミットを削除する

于 2011-06-23T18:48:53.480 に答える
2

または:

git push origin +364705c23011b0fc6a7ca2d80c86cef4a7c4db7ac8^:master

オリジンリモートリポジトリのマスターブランチを最後のコミットの親に強制します

于 2014-10-22T22:41:26.343 に答える