1. git reset の基本
git reset
コマンドは、主にコミットの履歴やステージングエリアの変更を取り扱うためのものです。
-
最後のコミットを取り消す(変更は残す):
git reset HEAD~1
-
ステージングエリアの変更を取り消す(指定のファイルのみ):
git reset <file>
-
特定のコミットまでヘッドを戻す(コミット履歴を書き換える):
git reset --hard <commit-hash>
2. git restore の基本
git restore
コマンドは、特定のファイルやディレクトリのワーキングディレクトリやステージングエリアの変更を取り消すことを主目的としています。
-
ワーキングディレクトリの変更を取り消す:
git restore --source=HEAD -- <file>
-
ステージングエリアの変更を取り消す:
git restore --staged <file>
3. 重複している機能と違い
共通点:
両者ともに、ステージングエリアの変更を取り消す機能があります。したがって、ファイルをステージングエリアから取り下げたい場合、git reset <file>
でも git restore --staged <file>
でも同じ結果を得ることができます。
違い:
-
git reset
はコミット履歴に関連する操作がメインです。特定のコミットにHEADを戻したり、過去のコミットを取り消すことが可能です。 -
git restore
はファイルの具体的な変更に焦点を当てています。ワーキングディレクトリの変更を取り消したり、ステージングエリアの特定のファイルの変更を取り消すことができます。