LoginSignup
3
2

git reset と git restore の違いを理解しよう

Last updated at Posted at 2023-10-20

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 はファイルの具体的な変更に焦点を当てています。ワーキングディレクトリの変更を取り消したり、ステージングエリアの特定のファイルの変更を取り消すことができます。
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2