2011-08-05 10 views
0

間違い私は何日も仕事のコミットをどこにもしていません。私が現在のブランチをチェックしたとき、gitは私に(ブランチなし)と答えました。多くの人がコミットする(ブランチはありません)

私は実際に私が新しい支店(マスター以外)にコミットしていたという印象を受けていて、すべてうまくいっています。今、私が戻ってトラバースし、非常に古いコミット(約1ヶ月前)のブランチをチェックしても、それはどこにもない(つまりブランチがない)ということです。

私が知っているのは、1つのコミットであればマージが役立つでしょう。今、マスターとマージされた以前のコミットをすべて取得する方法はありますか?

ありがとうございます。

答えて

1

おそらく、「デタッチヘッド」(例えば、git checkout abc123efの後)にコミットしたとします。

最後にコミットしたコミット(つまり、 "lost"ブランチのHEAD)を知っていれば、ブランチをこのコミットにリセットすることができます。git branch -f some-branch cbd131ef。あなたが "いいえブランチ" のgitにチェックアウトしない

+2

最後のコミットがわからない場合は、おそらく 'git reflog'で見つけることができます – jalf

+0

Thanks Koraktor、@ Jalf。私はしようとします –

+0

こんにちは、それは人、ありがとう –

3

は言う:

あなたは '切り離さHEAD' 状態です。あなたは周りを回り、 実験的な変更を行い、それらをコミットすることができます 別のチェックアウトを実行して、ブランチに影響を与えることなくこの状態で行う コミットを捨てることができます。

作成したコミットを保持するために新しいブランチを作成する場合は、checkoutコマンドで-bを使用して (現時点またはそれ以降)に実行することができます。 例:もちろん

Gitチェックアウト-b new_branch_name

あなたが望むようにあなたのように多くのコミットをマージすることができます。

紛失したヘッドを見つけるには、git reflogを使用します。

また、分離したヘッドがガベージコレクションされる可能性があることを覚えておく必要があります。

+0

こんにちはkan;ありがとう。しかし、私はreflogに「分離された頭」を見つけることができません。理由は何でしょうか? –

+0

あなたはここに自分のコミットを探してください。それは「分離頭」と名付けられていません。 – kan

+0

私は今あなたのレポの状態がわかりません。あなたの最新コミットですか?ちょうど "git checkout -b new_branch_name"を実行してください。その後、マスターに切り替えてブランチをマージすることができます。 – kan

関連する問題