私はファイルの古いバージョンを見たいと思っていました。私は悪いことをして、マスターブランチでそれをチェックして、孤立した頭を作り、新しいリビジョンをコミットしました。gitはデタッチヘッドでコミットした後に元のマスターに戻ります
これはわかりません。元のリポジトリに戻る方法を理解できませんでした。あたかもコミットが数多く失われたかのように見えました。いくつかの検索の後、私は "reflog"を使って最近のコミットのSHAを見つけることができたことを知りました。そのSHAを別のブランチにチェックアウトし、状況を理解するまでそこから作業します。
古いリビジョンをチェックアウトするときは、ブランチで実行することをお勧めします。しかし、私はgitの全体的なアイデアを取得し始めていると思うし、何が起こったのかを理解したいと思う。
私の質問:「チェックアウトマスター」や「リセット - ハードディスク」を実行して元の状態に戻れないような理由を説明できる人がいますか?これを行う正しい方法は何ですか?ここで
は謎の状態に至った一連のコマンドです:
git checkout 343294f125 myfile.txt
git checkout -- myfile.txt
git checkout master myfile.txt
git add file2
git commit
これらのステップは、これらのコマンドのいずれもが、デタッチヘッド状態につながりません
git reset --hard
git checkout master
# git log still shows commits going back from 34329, not recent ones
あなたが何をしたのかは分かりませんが、 'git checkout master'は' master'ブランチに戻る正しい方法です。あなたが実際に 'master'をチェックアウトして、あなたが期待する履歴が見当たらない場合、' git reset -hard'を実行すると意図しない結果が出るかもしれません(元のブランチに戻るためにハードリセットを使わないでください)。 –
commdnsのシーケンスは、分離されたHEADにつながってはなりません。これらのコマンドの前にあなたは何をしたのですか?'git checkout'や 'git checkout 'のようなものかもしれません。 –
ElpieKay
私は上記の最初のコマンドは、分離ヘッドを引き起こしたと考えています。特定のファイルの古いバージョンをチェックアウトしています: "git checkout 343294f125 myfile.txt" – beginner