HOWTO · Git

Git でローカルの変更を以前の状態に戻す

この記事では、ローカルリポジトリに加えられた変更を元に戻す方法について説明します。

マリオにタスクが割り当てられ、それを完了しようとしたとしましょう。しかし、残念ながら、クライアントは要件を変更し、マリオに以前に割り当てられたタスクの作業を停止するように依頼しました。このジレンマの完璧な解決策は何でしょうか。

この記事では、Git の以前の状態へのローカルな変更を確認する方法を学習します。

Git のステージングされていないローカル変更を元に戻す

通常、ファイルをステージにプッシュするコマンド git add を使用していない場合は、以下の手順に従って前の状態に簡単に移動できます。

  • git status でファイルのステータスを確認します。
    $ git status
    On branch dev
    Your branch is up to date with 'origin/dev'.
    
    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:   frontend/src/index.tsx
    	modified:   frontend/src/common/components/index.tsx
    	modified:   frontend/src/common/components/index.css
    
  • ステータスがわかっているので、好みに応じて以下のオプションを使用できます。
    • ローカルの変更を上書きします
    git checkout -- <file>
    
    • ローカルの変更を保存して、プロジェクトの後半で使用できるようにします。
    git stash
    
    • ファイルに加えられたすべての変更を破棄します
    git reset --hard
    

Git でステージングされたローカルの変更を戻す

git add コマンドを使用してファイルを追加した場合は、以下の手順に従ってファイルを以前の状態に戻すことができます。

  • git status を使用して、追加されたファイルが利用可能かどうかを確認します。
  • ステージングされたファイルを確認したので、元に戻すファイルを選択し、状況に応じて次のコマンドを使用できます。
    1. ファイルへの変更を保持しますが、ステージングしたままにしないでください。
    git restore --staged <file_name_with.path>
    
    1. 変更を保持しながら、すべてのファイルのステージングを解除します。
    git reset
    
    1. すべての変更を破棄し、後で使用できるように保存します。
    git stash
    

    注:git stash pop を使用して git stash の効果を元に戻し、git stash list を使用して使用可能な stash を一覧表示します。

    1. すべてを破棄します
    git reset --hard