2016-08-30 12 views
2

git checkout "commit number1"を使用して前のコミットにロールバックしました。それから、私はコミットしていて、ブランチではないことを認識していなかったので、ここで変更を加えて"commit number1"にコードをコミットしました。 フィーチャーブランチに切り替えました。 feature/branch1とコードが表示されません。 私は"commit Number1"に戻っても、そこにコードは表示されません。 私は何かから切り離されていますか?gitで失われたコミットからコードを回復するには?

$ git checkout 49da8b4d431 

Note: checking out '49da8b4d431'. 

You are in 'detached HEAD' state. You can look around, make experimental 
changes and commit them, and you can discard any commits you make in this 
state without impacting any branches by performing another checkout. 

If you want to create a new branch to retain commits you create, you may 
do so (now or later) by using -b with the checkout command again. Example: 

    git checkout -b new_branch_name 

コードを回復するにはどうすればよいですか?私のコードはどこに行きましたか?

+0

gitを元に戻します。 –

+0

ここでは、何をする必要があるかについて完全に説明しています。 http://stackoverflow.com/questions/34519665/how-to-move-head-back-to-a-previous-location-detached-head/34519716#34519716 – CodeWizard

答えて

1

git reflogあなたのHEADの履歴を表示します。それを見て、"commit number1"の上に行ったコミットのSHAを見つけてください。あなたがSHAを知っているとき、あなたはそれが必要な場所で桜を選ぶことができます。

+0

ありがとう@Paul。 reflogは良いです。 – zachandcode

3

タイプgit reflog最新のすべてのコミットの一覧が表示されます。メッセージが"commit number1"のコミットを見つけて、このコミットのSHA-1ハッシュを記録します(これは7文字のランダムな英数字の文字列のように見えます)(s73nd9aなど)。

このコミットを機能ブランチに導入するには、git cherry-pickを使用することをお勧めします。次のことを試してみてください。

git checkout feature/branch1 
git cherry-pick s73nd9a 

これは、単一のデタッチヘッド状態の中に作られたコミットを適用します。チェリーピックは基本的に1つのコミットのマージであることを覚えておいてください。そうすれば、矛盾が生じる可能性があります。

+0

THank @Tim。これは非常に役に立ちます。 – zachandcode

関連する問題