誤って間違ったファイルをコミットしてしまいましたギットただし、コミットをまだサーバーにプッシュしていません。
ローカルリポジトリからこれらのコミットを元に戻すにはどうすればよいですか?
ベストアンサー1
コミットを取り消してやり直す
$ git commit -m "Something terribly misguided" # (0: Your Accident)
$ git reset HEAD~ # (1)
[ edit files as necessary ] # (2)
$ git add . # (3)
$ git commit -c ORIG_HEAD # (4)
git reset
は、元に戻すコマンドです。作業ツリー (ディスク上のファイルの状態) を変更せずに、最後のコミットを元に戻します。再度コミットする前に、再度追加する必要があります。- 修正する作業ツリーファイル。
git add
新しいコミットに含めたいもの。- 古いコミット メッセージを再利用して変更をコミットします。
reset
古いヘッドを ; にコピーしました.git/ORIG_HEAD
。commit
と-c ORIG_HEAD
エディタが開き、古いコミットのログメッセージが最初に表示され、編集できるようになります。メッセージを編集する必要がない場合は、-C
オプション。
あるいは、前のコミット(またはそのコミットメッセージ)を編集するには、commit --amend
現在のインデックス内の変更を前のコミットに追加します。
サーバーにプッシュされたコミットを削除する(元に戻すのではなく)には、 で履歴を書き換えるgit push origin main --force[-with-lease]
必要があります。; を使うのはほとんどの場合悪い考えです--force
。--force-with-lease
代わりに、Git マニュアル:
すでに公開されているコミットを修正する場合は、履歴を書き換えることの影響を理解する必要があります。
参考文献
git reflog
SHA-1を決定するために使用できます元に戻したいコミットの。この値を取得したら、上で説明した一連のコマンドを使用します。
HEAD~
と同じですHEAD~1
。記事Git の HEAD とは何ですか?複数のコミットをアンコミットしたい場合に役立ちます。