17

gitでファイルをリセットできるのはなぜですか?reset頭を動かしているという意味で理解できたと思いました…明らかに間違っていました。

したがって、インデックスと作業ディレクトリに表示されることを除いて、とgit reset sha file同じように動作するようです。git checkout sha filefile

それは私には意味がありません。誰かが違いを説明できますか?

4

2 に答える 2

12

tl;dr git reset COMMIT FILEはインデックスのみgit checkout COMMIT FILEを変更し、インデックスと作業ツリーの両方を変更します。

git reset--soft--hardおよび--mixed(および--keepおよび--merge)の非常に重要なフラグがあります

http://git-scm.com/docs/git-reset

--mixedがデフォルトであり、そうするときはリセットgit reset sha fileを行っています。mixed

--混合

作業ツリーではなくインデックスをリセットし (つまり、変更されたファイルは保持されますが、コミットのマークは付けられません)、更新されていないものを報告します。これがデフォルトのアクションです。

上記のように、この場合のリセットは作業ツリーにまったく影響を与えず、インデックス内のバージョンのみが sha 内のバージョンにリセットされます。

git checkout一方で:

または --patch が指定されている場合、git checkout はブランチを切り替えません。作業ツリー内の名前付きパスを、インデックス ファイルまたは名前付き (ほとんどの場合コミット) から更新します。

そのgit checkoutため、ファイルの変更が失われ、sha のファイルのバージョンにあったものに置き換えられますが、混合リセットを行うと、インデックスのみがリセットされ、作業ディレクトリにはまだ必要に応じて後で再度ステージングできる変更。

于 2011-08-02T23:13:52.600 に答える
8
git checkout

ファイルへの変更を元に戻します。

git reset

ステージング領域からファイルを削除しますが、変更は保持します。

于 2011-08-02T21:27:30.730 に答える