git reset コマンド
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 基本操作