こんにちは、新卒のエンジニアです。
先日、プルリクエストのレビューで先輩から指摘されたコードを修正する時に役立ったことをメモ代わりに投稿しようとおもいます。
状況としては、複数コミットがあり、取り消しでは戻せない状態。また、戻したいファイルのコミットに他のファイルのコミットも含まれている状態の時に必要になるかと思います。
私の場合は、APIのコードを実装しており、実装に直接関係Visual Studioのソリューションファイル(.sln)にバージョンアップの差分がありコミットしてしまった。
手順
-
まず、元に戻したいコミットのハッシュを見つけます。
git log
コマンドを使用して、コミットのハッシュを見つけることができます。 -
次に、
git checkout
コマンドを使用して、元に戻したいコミットハッシュからファイルをチェックアウトします。たとえば、コミットabc123
でfile.txt
に行われた変更を元に戻したい場合は、次のコマンドを使用します。git checkout abc123 -- file.txt
これにより、
file.txt
のバージョンがコミットabc123
からチェックアウトされ、現在のファイルのバージョンが上書きされます。 -
最後に、
git commit
コマンドを使用して変更をコミットします。次のコマンドを使用して、元に戻した変更を含む新しいコミットを作成できます。git commit -m "Revert changes made to file.txt in commit abc123"
これにより、元に戻した変更を含む新しいコミットが作成されます。