web-dev-qa-db-ja.com

作業コピーを特定のGitコミットに一時的に切り替える

特定のGitコミットに切り替える方法その後に行われたすべてのコミットを失うことなく

ローカルファイルを変更したいが、コミットのデータベースはそのまま残り、現在の位置ポインターのみが現在選択されているコミットに設定されます。

ファイルの状態を特定のコミットに変更し、プロジェクトを実行し、終了したら、ファイルを最後のコミットに復元します。

プロジェクトのフォルダ全体を圧縮せずにこれを行う方法は?

220
Paul

特定のブランチmybranchにいる場合は、そのままgit checkout commit_hashに進みます。その後、git checkout mybranchでブランチに戻ることができます。今日は同じゲームでバグを二分しました:)また、 git bisect についても知っておく必要があります。

319

まず、git logを使用してログを表示し、必要なコミットを選択し、コミットを識別するために使用されるsha1ハッシュを書き留めます。次に、git checkout hashを実行します。完了したら、git checkout original_branch。これにはHEADを移動しないという利点があり、作業コピーを特定のコミットに切り替えるだけです。

51
Femaref

ここでのgit checkout <the-hash-you-want>の使い方を示す他の回答に加えて、使用していた場所に切り替えることができることを知っておく価値があります。

git checkout @{-1}

多くの場合、これは以下よりも便利です。

git checkout what-was-that-original-branch-called-again-question-mark

ご想像のとおり、git checkout @{-2}は、2つ前のgit checkoutsにいたブランチに戻ります。他の数値についても同様です。あなたがより大きな数字のためにどこにいたか覚えているなら、あなたはそのためにある種のメダルを獲得すべきです。


残念ながら、git checkout @{1}を使用すると、将来的にはブランチに移動できません。これは残念です。

6
Benjohn