私は、Masterブランチだけを持ち、オリジンがない、非常にシンプルなGitプロジェクトを持っています。
線のどこかで、誤ってデタッチドHEADをプロジェクトに作成しました。次に、そのデタッチされたHEAD
に一連のコミットを行った後、それをMaster
ブランチにマージしようとしました。これを行っていましたSourceTreeでは、最初はマージが機能しているように見えました(グラフはマスターが頭に入るのを示し、修正したマージの競合がありました)が、次にMaster
をダブルクリックしてそのブランチに切り替えた後、突然HEAD
が消えました。すべてのブランチの下のSourceTreeのどこにも見つけることができず、git branch
およびgit log
コマンドラインでは、Masterブランチも表示されます。
失われたデタッチされたHEAD
からコミットを取り戻す方法はありますか?
SourceTreeのどこにも見つかりません
コマンドラインインターフェイスに戻り、 git reflog を実行します。
HEAD)のSHA1をログで見つけることができるはずです。
デタッチされたHEADブランチをマスターに「マージ」する必要がないことに注意してください。
あなたは単にあなたの現在の切り離されたマスターをマスターにリセットしたかもしれませんHEAD commit。
「 Git分離ヘッドを修正する方法 」を参照
git checkout master
純粋なSourceTreeの方法で( このスレッドのように )
また、既存のブランチをチェックアウトし、最新のコミットを右クリックして、このコミットに対して
Reset <branch>
を選択して、ブランチポインターを目的の場所に移動することもできます。
HEAD
が表示されている場合、デタッチされたHEAD上にいることを意味します。つまり、ブランチがチェックアウトされておらず、コミットされてもブランチは移動されません。 SourceTreeでデタッチされたHEADをチェックアウトすると、かなりはっきりと警告が表示されます。そのため、これは事前にコマンドラインで行われ、SourceTreeでAfter Effectsを確認しました。
代替:
新しいブランチコマンドを使用して、「
HEAD
」ブランチ(実際にはまったくブランチではない)からブランチを作成します。その時点で頭はなくなりました。
その後、そのブランチをマスターとマージし、HEAD
から作成した不要なブランチを削除することができました。
これが私のために働いたものです:
git reflog
コマンドを使用して、消えたヘッドバージョンを見つけます。git checkout @{-1}
移動するHEAD消えたものに戻ります。番号-X
は、現在のヘッドから消えたコミットの数です。 -1
は、消えたバージョンが1
現在のHEADからコミットします。