はじめに
Gitは、バージョン管理システムの中でも特に強力で広く使われているツールです。日々の開発作業において、誤って行った変更を戻したいという状況はよくあります。この記事では、Gitで行うさまざまな「戻す」操作を、初心者から中級者向けに解説します。
ワーキングディレクトリの変更を戻す
-
未追跡ファイルを含むすべての変更を戻す
git clean -fd git checkout -- .
これはワーキングディレクトリの変更をすべて破棄します。
-
特定のファイルの変更を戻す
git checkout -- [ファイル名]
これは指定したファイルの変更を破棄します。
ステージングの変更を戻す
-
ステージングされた変更を戻す
git reset HEAD [ファイル名]
特定のファイルのステージングを解除します。
-
すべてのステージングされた変更を戻す
git reset HEAD
これはすべてのファイルのステージングを解除します。
ローカルコミットの変更を戻す
-
最後のコミットを取り消すが、変更は保持する
git reset --soft HEAD~1
最後のコミットを取り消しますが、変更はステージング状態で保持します。
-
最後のコミットを取り消し、変更も破棄する
git reset --hard HEAD~1
最後のコミットを取り消し、その変更も破棄します。
リモートへの同期(push)を戻す
-
リモートにpushしたコミットを取り消す
git revert [コミットID] git push origin [ブランチ名]
これにより、指定したコミットの変更を打ち消す新しいコミットが作成されます。
ブランチの操作
-
ブランチを切り替える
git checkout [ブランチ名]
git switch [ブランチ名]
Gitで
switch
コマンドを使用してブランチを切り替える機能は、Gitのバージョン2.23.0から導入されました。このバージョンは2019年8月にリリースされています。git switch
コマンドは、git checkout
の一部の機能をより明確にし、使いやすくするために導入されました。checkout
コマンドはブランチの切り替えとファイルの復元の両方に使用されていましたが、これらの機能がswitch
とrestore
に分割されました。例えば、新しいブランチに切り替える場合、以前は
git checkout -b [新しいブランチ名]
を使用していましたが、Git 2.23.0以降ではgit switch -c [新しいブランチ名]
というコマンドを使用できます。この変更により、Gitのユーザーインターフェースがより直感的になり、特に新しいユーザーがGitのコマンドを学ぶ際の混乱を減らすことが期待されています。もちろん、
git checkout
コマンドも引き続き使用可能ですが、特定の操作にはgit switch
やgit restore
を使う方が適している場合があります。 -
ブランチを新しく作成して切り替える
git checkout -b [新しいブランチ名]
-
ブランチを削除する
git branch -d [ブランチ名]
安全な削除で、マージされていない変更がある場合は削除されません。
git branch -D [ブランチ名]
強制削除で、マージされていない変更があっても削除します。
まとめ
Gitは非常に多様なツールであり、さまざまな方法で変更を元に戻すことができます。この記事で紹介したコマンドは、日々の開発作業でよく使われるものです。Gitを使用する際は常に注意して操作し、特にリモートリポジトリに影響を与えるコマンドは慎重に扱う必要があります。この記事があなたのGit操作の理解を深める助けになれば幸いです。