2017-07-03 13 views
2

私のプロジェクトでいくつかの変更が必要なときに、最後のコミットの状態に戻したい場合は、これらの両方のオプションを使用できます。彼らは実際に同じことをするのですか、それともそれらの間に違いはありますか?"git reset --hard"と "git checkout"の違いは何ですか?

+2

https://stackoverflow.com/questions/3639342/whats-the-difference-between-git-reset-and-git-checkout –

+0

「git reset」と「git checkout」の違いは何ですか? ?](https://stackoverflow.com/questions/3639342/whats-the-difference-between-git-reset-and-git-checkout) – Kai

答えて

2

は、2つのコマンドの違いは、次のとおりです。

git checkout . 

これは、現在のブランチから、それが何であれ、現在のフォルダをチェックアウトし、それを作業フォルダを置き換えるためのGitに指示します。しかし、これは作業フォルダの他の領域には影響しませんし、ステージにも関係しません。

git reset --hard 

これは、現在のブランチのHEADに全体の作業ディレクトリのステージをリセットします。これは、あなたの最後のコミット以来起こったことすべてを効果的にヌークすると考えることができます。

一般に、ハードリセットは頻繁には使用しませんが、さまざまな場所からのファイルやフォルダのチェックアウトが一般的です。

0

コミットIDに従わないと同じです。つまり、最新のコミットに状態をリセットします。しかし、reset --hard <commit_id>を実行すると、現在のブランチのHEADが指定されたコミットIDに変更されますが、checkoutは一時ブランチを作成します。ここで

git checkout 6a0ff74 
# would create a temp branch with its HEAD pointed to commit id 
# you can just checkout your original branch. 

git reset --head 6a0ff74 
# would change the `HEAD` of the current branch. To reverse the change 
# you must find the latest commit id and `reset --hard` to it again. 
+0

OPは、ハードリセットやチェックアウトの点について尋ねました。リセットやチェックアウトについてではありませんコミットハッシュ(私のdownvoteではない) –

+0

@TimBiegeleisen私は最初の行にその部分に答えました、それほど大きな違いはありません。違いは、これらのコマンドでコミットを使用する場合にのみ発生します。 – hspandher

0

git checkout Gitサーバーからの更新データを取得するには、ローカルマシンでも変更を保存してください。

git reset --hard特定のHEADでGitサーバーのようにコピーIDを作成し、ローカルマシンですべての変更を破棄します。

関連する問題