2

Git にはたくさんのドキュメントがあり、それに関する SO に関するたくさんの投稿があることは知っています (たとえば、「git commit」を削除する方法これを見てきました)。ここで行います。

これまでのところ私だけがコミットしているレポがありますが、最近2つの異なるラップトップから作業を開始し、Gitがマージと見なしたナンセンスを誤ってプッシュしてから、最新の変更もプッシュしました。

最後の 2 つのコミットを完全に削除し、その運命の日の前の状態にレポを巻き戻す方法を見つけようとしています (現在、そのレポに入る必要がある新しいコミットがたくさんあるため)。参考になる情報があれば、こちらの github でリポジトリがホストされていることに注意してください。

4

4 に答える 4

2

新しい人にとって、の代わりに行うのが最も簡単なことはgit reset --hard HEAD^、gitk--allを使用することです。

このようにして、すべての履歴を確認できます。現在のブランチは太字で示されています。以前に行っていたコミットを右クリックして、[現在のブランチをここにリセット]を選択できます。実行するリセットの種類を入力するように求められます。「ハード」を選択すると、目的の場所に戻るはずです。

于 2012-07-30T02:57:39.270 に答える
1

最新のコミットを削除するには、単にgit reset --hard HEAD^. merge最新のコミットがマージの場合、これは最初の親 (つまり、 /pullが実行される前の状態) に戻ります。

ブランチの先端にしたい正確なコミットを特定できる場合は、問題のコミットのgit reset --hard $SHA場所を使用できます$SHA

于 2012-07-29T21:26:10.197 に答える
0

Shahbazが投稿した質問の回答のおかげで、私は最初に試しました

git push -f origin HEAD^^:master

最後の2つのコミットを完全に削除したようです。しかし、ローカル ファイルに変更を加えてプッシュするとすぐに、古いコミットが表示されました。:(

今回はHEAD^^^(最後の 3 つのコミットを削除する必要があったため)再試行した後git log、すべてがローカルに残っていることを確認しました。これを解決する方法を知らなかったので、ローカル ディレクトリを消去し、リポジトリを再クローンし、新しく変更したファイルに手動でコピーしました。最後に、追加とプッシュは古い不要なコミットを元に戻しませんでした。

明らかに、もっと良い方法があると確信していますが、素敵な人々の提案に従うことでそれを実現することはできませんでした. (例: やってみgit rebase -i HEAD~4ましたが、エディターで得た出力を理解できませんでした。行数が多すぎて (9)、どうすればよいかわかりませんでした。)

この質問を重複として削除する必要があるかどうかの判断は、経験豊富な人に任せます。

于 2012-07-30T04:59:07.373 に答える
0

これは私にとってはうまくいきました(記憶による):

git reset --hard HEAD^^
git push --force HEAD:master
git pull
于 2012-07-29T22:00:48.657 に答える