リモートリポジトリにコミットを2回プッシュして問題が発生していることがわかりました。Gitを使用してリモートリポジトリにプッシュされたコミットを取り除く方法
元のバージョンに戻るにはどうすればよいですか?つまり、最新の2つのコミットを削除しますか?
'REMOTE' はリモート名です$ git reset HEAD^ --hard
$ git push REMOTE -f
:
リモートリポジトリにコミットを2回プッシュして問題が発生していることがわかりました。Gitを使用してリモートリポジトリにプッシュされたコミットを取り除く方法
元のバージョンに戻るにはどうすればよいですか?つまり、最新の2つのコミットを削除しますか?
'REMOTE' はリモート名です$ git reset HEAD^ --hard
$ git push REMOTE -f
:
私はあなたがローカルにロールバックし、結果をプッシュすることができると思います。
すでにリモートリポジトリにコミットをプッシュしているので、リモートリポジトリから既に取得した人には問題が生じないように、2つのコミットを元に戻すことをお勧めします。
例には、歴史をコミット次のコマンドを使用します。
e512d38 Adding taunts to management.
bd89039 Adding kill switch in case I'm fired.
da8af4d Adding performance optimizations to master loop.
db0c012 Fixing bug in the doohickey
あなただけの歴史を変更することなく、コミットを元に戻したい場合は、以下の操作を行うことができます
git revert e512d38
git revert bd89039
また、あなたはドンが」他の人がkillスイッチを追加して削除したことを他の人に見てもらいたい場合は、次のコマンドを使ってリポジトリをロールバックすることができます(ただし、すでにリモートから変更を取得した他の人には問題が起こります)。
git reset --hard da8af4d
git push origin -f localBranch:remoteBranch
localBranch
はローカルブランチの名前で、remoteBranch
はリモートブランチの名前です。
「管理にトーンを加える」と、古い(新しい? :-) – torek
@torek私は言うことができる、私はコミットした酒飲みと飲酒コミッターの両方です。 –
まず、このコマンドを入力します。
git log -n 4
このコマンドは、最後の4回のコミットをSHAで表示します。その後、次のコマンドを入力します。
git rebase -i SHA_ID
SHA_IDの代わりに、削除するコミット前のコミットのSHAを入力します。
このファイルが開くと、そのファイルの一番上にSHAと削除するコミットのメッセージが表示されます。この行を削除し、ファイルを保存して終了します。
これを済ませたら、プッシュする必要があります。したがって、次のコマンドを入力します。
git push -f origin master
これを実行すると、コミットが削除されたことがわかります。
あなたはそれを行うことはできますが、その間にコミットを取得した他の誰もが...悪い言葉を避けるために、「彼らはあなたの行動から回復するためには一生懸命働かなければならないでしょう" :-)以前のコミットを元に戻す新しいコミットを追加するには、 "git revert"を使う方が良いでしょう。 (元のコミットを完全に元に戻すというパッチが追加されていると考えてください) – torek
@torek最初はこれを考えていましたが、shadowfaxは他のものを持っている可能性がありますすべてのリモートコミットを正しく実行できるようにするなどの目的で使用します。そうしないと、「復帰とプッシュ」が考えられます。 – peter
あなたは 'git revert'を理解していない人がどれくらいいるのか驚くかもしれないと思います。一方、全く異なる動機があるかもしれません(David M. Syzdekの答えのように)。いくつかのケースでは、良い解決策はありませんが、状況の悪い悪いものはありません。 – torek