ワークツリーで作業をしている際に誤って修正をしてしまった!
色々やってたらわけわからなくなった…
ワークツリー内で作業をしていた際に変更したファイルを元に戻したい場面があります。
git checkoutコマンドを利用することで修正前の状態に戻すことができます。
checkoutコマンドの種類
よく利用されるgit checkoutコマンドの種類についてご紹介していきます
git checkout — ファイル名
指定したファイルの変更を取り消す
git checkout -- index.html
git checkout — ディレクトリ名
指定したディレクトリ内のすべての変更を取り消す
git checkout -- dir
git checkout — .
すべての変更を取り消す。(.)ピリオドは任意のファイルすべてを意味する。
git checkout -- .
–(ハイフン2つ)を付ける目的
git checkoutコマンドはブランチの変更をするときにも使用するコマンドの為、ファイル名とブランチ名が同一の名前だったときにGit側がどちらを指定しているのか解らなくなってしまう場合がある。
それを避けるために–(ハイフン2つ)を付けることでGitが正常に認識することができるようになる
ファイルへの変更を取り消す
実際にワークツリー内のindex.htmlファイルを変更して取り消す作業を行っていきます。
ファイルを変更したらgit statusコマンドで変更があることを確認します。
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: index.html //詳細①
no changes added to commit (use "git add" and/or "git commit -a")
詳細①
index.htmlファイルに変更があることがわかる。
git checkoutコマンドを入力して実行する
git checkout -- index.html
コマンドを実行後に再度、git statusコマンドで確認をする。
$ git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
変更がなくなっていることがわかる。
既にステージにadd(追加)している場合は取り消し不可
git checkoutコマンドはステージの状態に戻すコマンドです。
ステージにadd(追加)していない状態であればワークツリー内にステージの状態をコピーしてくることができるので、結果的に修正した内容を取り消すことができます。
そのため、既にステージにワークツリー内の変更をadd(追加)してしまった場合は今回ご紹介するコマンドではで修正することはできません。