Gitは開発の現場で欠かせないツールですが、操作に慣れるまでは戸惑うことも多いですよね。本記事では、変更を元に戻す基本的な方法を解説します。作業中に「もう元の状態に戻したい!」と思ったときの対処法を学びましょう。
1. ファイルへの変更を取り消す方法
「編集したけど、もう元に戻したい」という場面では、git checkoutコマンドを使います。このコマンドを使うと、ステージ(インデックス)にある状態を基に変更を取り消すことができます。
コマンドの使い方
- 特定のファイルを取り消す:
git checkout -- ファイル名 - ディレクトリ単位で取り消す:
git checkout -- ディレクトリ名/ - 全ての変更を一括で取り消す:
git checkout -- .
注意:--はGitに「ファイルやディレクトリ名」を指定していると伝えるためのものです。これによりブランチ名との混同を防ぎます。
実際の操作手順
- 編集後の状態を確認
git status例:index.htmlが変更されていると表示されます。 - 変更を取り消す
git checkout -- index.html - 取り消し後を確認
git status変更が取り消されたことを確認できます。
内部で何が起きている?
Gitは「ステージ」の情報を取得し、それをワークツリー(作業ディレクトリ)に反映することで変更を取り消します。
2. ステージした変更を取り消す方法
変更をステージに追加したけど「間違えて追加してしまった!」という場合、git resetコマンドを使用します。このコマンドは、ステージに追加された変更を取り消します。
コマンドの使い方
- 特定のファイルを取り消す:
git reset HEAD ファイル名 - ディレクトリ単位で取り消す:
git reset HEAD ディレクトリ名/ - 全ての変更を一括で取り消す:
git reset HEAD .
注意点
git resetはステージから変更を取り消すだけで、ワークツリー(ローカルファイル)の変更には影響を与えません。ワークツリーも元に戻したい場合は、さらにgit checkoutを実行してください。
操作手順
- 変更を確認
git status例:index.htmlがステージされていることを確認。 - ステージした変更を取り消す
git reset HEAD index.html - 変更がワークツリーに戻ったか確認
git status
3. 直前のコミットをやり直す方法
「コミットしたけど、修正漏れやコミットメッセージを修正したい!」そんなときは、git commit --amendを使いましょう。
コマンドの使い方
- 修正漏れをコミットに追加する:
- ファイルを修正
- ステージに追加:
git add ファイル名 - コミットを修正:
git commit --amend
注意点
- リモートにプッシュしたコミットを修正しないこと!
修正すると履歴の整合性が崩れ、他の開発者に影響を与える可能性があります。
実際の操作例
- 修正後のファイルをステージに追加
git add index.html - コミットを修正
git commit --amend - コミットメッセージを書き直す場合
エディターが開いたら、メッセージを編集して保存します。
まとめ
Gitで変更を元に戻す操作は以下の3つに分類されます。
| 状況 | コマンド | 対象 |
|---|---|---|
| ワークツリーの変更を取り消す | git checkout -- | ファイル/ディレクトリ/全体 |
| ステージの変更を取り消す | git reset HEAD | ファイル/ディレクトリ/全体 |
| 直前のコミットをやり直す | git commit --amend | コミット内容、またはメッセージ |
これらのコマンドを駆使することで、より柔軟かつ正確にGit操作を進められるようになります。次回は、さらに詳細な変更操作について解説します!


コメントを残す