Part 1では、チーム開発における最大の関門「マージコンフリクト」の解決方法を学びました。しかし、Gitでのトラブルはそれだけではありません。時には、「間違ったファイルをコミットしてしまった!」「コミットメッセージにタイプミスが!」といった、自分自身の小さなミスを修正したくなる場面も頻繁に訪れます。
この章では、そうした個人の作業における「しまった!」をスマートに解決するためのコマンドを解説します。これらのコマンドは、歴史を修正する強力な力を持つため、その特性と正しい使い方をしっかり理解することが重要です。
git revert
:公開した歴史を安全に打ち消す</h3>目的: すでにリモートリポジトリにpush
してしまったコミットを、歴史を書き換えることなく安全に打ち消します。これは、チームに共有済みの間違いを修正する際の、最も正しく安全な方法です。
例えるなら: 一度発行した新聞記事に間違いが見つかったため、「先日の記事には誤りがありました」という訂正記事を新たに出すようなものです。元の間違った記事(コミット)そのものを歴史から消すのではなく、その変更を無効化する新しい記事(新しいコミット)を追加します。これにより、読者(他の開発者)の混乱を防ぎます。
どんな時に使う?:
push
したコミットが原因で、アプリケーションにバグが発生したり、テストが失敗したりしたことが判明した時。push
してしまい、とりあえずその変更を打ち消すコミットを投入したい時。(※別途、履歴から完全に削除する作業は必要です)まず git log
で、打ち消したいコミットのハッシュ値(コミットID)を調べます。
git log --oneline
a1b2c3d (HEAD -> main) feat: Add new feature that has a bug
e4f5g6h fix: Correct a previous issue
...
a1b2c3d
のコミットを打ち消すことを決め、revert
コマンドを実行します。
git revert a1b2c3d
revert
コマンドを実行すると、エディタが開き、打ち消しコミット用のメッセージが自動で生成されます(例: Revert "feat: Add new feature that has a bug"
)。