2016-07-19 9 views
-1

git resetコマンドは、履歴(*)内でブランチを後方に移動し、移動するブランチがHEADが指しているものであることを理解します。離散HEAD状態のGitリセット

私は不思議に思って、detached HEAD stateに電話して何が起こるかを調べようとしました。私はエラーを期待していたが、gitは何かをしたが、私はそれが何をしたのか分かりません。

GitはHEADのように振る舞いましたが、私がチェックアウトしてdetached HEAD stateに入る前の位置を指していましたか?


[編集1]私は実際にそれを考え出しました。 1つのヘッドが取り外されていないときとまったく同じですが、それ以外のブランチを動かすことはありません。これは、古いコミット指定するときに、[編集2(*)]git resetが実際にだけ歴史の中で後方分岐を動かすだけ

です。 git reset HEADを実行するときは、ブランチから離れています(下記のコメントを参照)。

+0

質問を実行した正確なコマンドで更新する必要があります... gitリセットには3つの形式があります...それぞれのパラメータを使用しています。最も一般的な使用方法はgit addのoposite操作を実行します... –

+0

私は、それがここで重要なのか分からない。 git resetのすべてのバージョンは少なくとも1つのことを行います。つまり、現在のブランチを別の場所に移動します。実際には、私はちょうど頭が動いたことを確認した。 – Radioreve

答えて

3

git resetは、現在のブランチとHEADを特定のコミットに移動させます。デタッチされたHEADの場合は、HEADだけを移動させます。

+0

しかし、その後、gitは、私がファイルをunstagedしていると私に何を疑問だと伝えます。それらのファイルは何ですか?彼らはトップコミットからのものか、私がちょうどチェックアウトしたものか(これがコミットした時に演奏されたもの) – Radioreve

+0

@Radioreve 'git reset'には' --soft '、' --mixed'、 '--hard'です。 '--mixed'がデフォルトです。コミット履歴が 'A-B-C'であるとします。 'git reset B'が' git reset B --mixed'に等しい場合、HEADはBに移動しますが、BからCへの変更はunstagedとして保持されます。 'git reset B --soft'の場合、変更は未コミットとして保持されます。 'git reset B --hard'の場合、変更は破棄されます。 'git reset'の後、' git status'を実行して確認します。 – ElpieKay

-1

あなただけ実行した場合:git reset

それはunstage変化であるgit addの反対の動作を行い... git resetコマンドの三つの形式、関連するオプションとパフォーマンスとのそれぞれが

あります異なる操作。深く進めたい場合は、git reset文書をチェックしてください。ただ、ストレスへ

2

:私はgitのリセットコマンドは、常に歴史の中で後方枝を動かすことを理解

は、これは正しくないですし、避けるために、あなたの質問を編集したい場合がありますgitに新しい人々を混乱させる。たとえば、git reset --hardはそうしません。単にHEADやブランチを動かすことなく作業ディレクトリとインデックスを消去します。

実際、<commit>を省略したgit reset [<commit>]のすべての変形では、頭や枝は移動しません。 git resetの他のオプションは、他のものを行いますが、すべてがヘッドを移動するわけではありません。頭を動かすことは、git resetができるいくつかのアクションの1つに過ぎません。

+0

あなたはそうだと指摘してくれてありがとう。 – Radioreve

+0

概念的には、 'git reset' *は常に' HEAD'を動かします。あなたが今立っている場所からあなたが今立っている場所に移動すれば、その移動はとても小さくて速いです:-)誰もあなたが移動するのを見ることはできず、移動したと信じることを拒否します。 :-)しかし、逆方向に移動する必要はないということは間違いありません。現在の場所(移動していない「移動」)に移動したり、前方に移動したり、横に移動したりすることができます無関係なコミット)。 – torek

+0

私はあなたがそこで何をしたかを見ています...ちょっと左に飛びます... – AnoE

関連する問題