gitでファイルをリセットできるのはなぜですか?reset
頭を動かしているという意味で理解できたと思いました…明らかに間違っていました。
したがって、インデックスと作業ディレクトリに表示されることを除いて、とgit reset sha file
同じように動作するようです。git checkout sha file
file
それは私には意味がありません。誰かが違いを説明できますか?
gitでファイルをリセットできるのはなぜですか?reset
頭を動かしているという意味で理解できたと思いました…明らかに間違っていました。
したがって、インデックスと作業ディレクトリに表示されることを除いて、とgit reset sha file
同じように動作するようです。git checkout sha file
file
それは私には意味がありません。誰かが違いを説明できますか?
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 のファイルのバージョンにあったものに置き換えられますが、混合リセットを行うと、インデックスのみがリセットされ、作業ディレクトリにはまだ必要に応じて後で再度ステージングできる変更。
git checkout
ファイルへの変更を元に戻します。
git reset
ステージング領域からファイルを削除しますが、変更は保持します。