git reset コマンド

Git 基本操作Git 基本操作


git reset コマンドはバージョンをロールバックするために使用され、特定のコミットのバージョンに戻すことを指定できます。

git reset コマンドの構文形式は以下のとおりです:

git reset [--soft | --mixed | --hard] [HEAD]

--mixedデフォルトなので、このパラメータを付けなくても構いません。ステージングエリアのファイルを前回のコミット(commit)と一致するようにリセットし、作業ディレクトリのファイル内容は変更されません。

git reset  [HEAD] 

例:

$ git reset HEAD^            # 回退所有内容到上一个版本  
$ git reset HEAD^ hello.php  # 回退 hello.php 文件的版本到上一个版本  
$ git  reset  052e           # 回退到指定版本

--softパラメータは特定のバージョンにロールバックするために使用されます:

git reset --soft HEAD

例:

$ git reset --soft HEAD~3   # 回退上上上一个版本 

--hardパラメータは、作業ディレクトリ内の未コミットの変更をすべて取り消し、ステージングエリアと作業ディレクトリの両方を前のバージョンに戻し、以前のすべてのコミット情報を削除します。

git reset --hard HEAD

例:

$ git reset --hard HEAD~3  # 回退上上上一个版本  
$ git reset –hard bae128  # 回退到某个版本回退点之前的所有信息。 
$ git reset --hard origin/master    # 将本地的状态回退到和远程的一样 

注意:慎重に使用してください–-hardパラメータは、ロールバックポイント以前のすべての情報を削除します。

HEAD の説明:

  • HEAD は現在のバージョンを表します

  • HEAD^ は前のバージョン

  • HEAD^^ は2つ前のバージョン

  • HEAD^^^ は3つ前のバージョン

  • 以下同様に続きます...

~数字で表すことができます
  • HEAD~0 は現在のバージョンを表します

  • HEAD~1 は前のバージョン

  • HEAD^2 は2つ前のバージョン

  • HEAD^3 は3つ前のバージョン

  • 以下同様に続きます...

git reset HEAD

git reset HEAD コマンドは、ステージング済みの内容を取り消すために使用されます。

まず README ファイルを変更します。内容は以下のとおりです:

# サンプル Git 测试
# サンプル 

hello.php ファイルを次のように変更します:

<?php
echo 'サンプル:www.example.com';
echo 'サンプル:www.example.com';
echo 'サンプル:www.example.com';
?>

現在、2つのファイルを変更し、両方ともステージングエリアに追加しました。ここで、そのうちの1つのステージングを取り消す操作は次のとおりです:

$ git status -s
    M README
    M hello.php
$ git add .
$ git status -s
M  README
M  hello.php
$ git reset HEAD hello.php 
Unstaged changes after reset:
M    hello.php
$ git status -s
M  README
    M hello.php

ここで git commit を実行すると、README ファイルの変更のみがコミットされ、hello.php はコミットされません。

$ git commit -m '修改'
[master f50cfda] 修改
    1 file changed, 1 insertion(+)
$ git status -s
    M hello.php

hello.php ファイルの変更がコミットされていないことがわかります。

この場合、以下のコマンドを使用して hello.php の変更をコミットできます:

$ git commit -am '修改 hello.php 文件'
[master 760f74d] 修改 hello.php 文件
    1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working directory clean

簡潔に言うと、git reset HEAD を実行して、以前 git add で追加したが、次のコミットスナップショットに含めたくないステージング済みの内容を取り消します。



Git 基本操作Git 基本操作

その他の拡張