ファイルやプロジェクトを以前の状態に復元またはロールバックする方法を学ぼうとしていますが、、、およびの違いがわかりません。git revert
一見同じ目的の 3 つの異なるコマンドがあるのはなぜですか。また、いつ、どちらかを選択する必要がありますか。checkout
reset
ベストアンサー1
これら 3 つのコマンドの目的はまったく異なります。まったく似ていません。
git revert
このコマンドは、以前のコミットからの変更を元に戻す新しいコミットを作成します。このコマンドは、プロジェクトに新しい履歴を追加します (既存の履歴は変更されません)。
git checkout
このコマンドは、リポジトリからコンテンツをチェックアウトし、それを作業ツリーに配置します。コマンドの呼び出し方法に応じて、他の効果が発生することもあります。たとえば、現在作業中のブランチを変更することもできます。このコマンドは履歴を変更しません。
git reset
このコマンドは、もう少し複雑です。実際には、呼び出される方法に応じて、いくつかの異なる処理が行われます。インデックス (いわゆる「ステージング領域」) を変更します。または、ブランチ ヘッドが現在指しているコミットを変更します。このコマンドは、既存の履歴を変更する場合があります (ブランチが参照するコミットを変更することによって)。
これらのコマンドを使用する
プロジェクトの履歴のどこかでコミットが行われ、後になってそのコミットが間違っていて行うべきではなかったと判断した場合、git revert
このツールが役立ちます。このツールは、間違ったコミットによって導入された変更を元に戻し、履歴に「元に戻す」ことを記録します。
作業ツリー内のファイルを変更したが、変更をコミットしていない場合は、 を使用して、git checkout
リポジトリからの最新のファイルのコピーをチェックアウトできます。
コミットを行ったものの、それを他のユーザーと共有しておらず、不要になった場合は、 を使用してgit reset
履歴を書き換え、そのコミットを行ったことがないかのように見せることができます。
これらは、考えられる使用シナリオの一部にすぎません。状況によっては、他のコマンドも役立つ可能性があり、上記の 3 つのコマンドにも他の用途があります。