2017-07-08 9 views
0

私はgitに2つのブランチ、マスター、SSLを持っています。
私はマスターブランチにいると思っていましたが、実際には切り離されました。私は変更をHEADにプッシュし、次にSSLブランチにチェックアウトし、それをマージしました。
私がしたとき、私はマスターにコミットされた変更がブランチに存在しないことを知り、私はそれらを見ることができませんでした。
失われたコミットを復元する方法はありますか? git reflog -n 20を実行

デタッチされたHEAD中にプッシュされた変更を復元する

e4a206b [email protected]{0}: checkout: moving from SSL to master 
94e0f8d [email protected]{1}: checkout: moving from master to SSL 
e4a206b [email protected]{2}: checkout: moving from SSL to master 
94e0f8d [email protected]{3}: reset: moving to 94e0f8d 
18aedb9 [email protected]{4}: checkout: moving from master to SSL 
e4a206b [email protected]{5}: checkout: moving from e4a206b20456d004b5ad19bb859e15f481df9b90 to master 
e4a206b [email protected]{6}: checkout: moving from SSL to master^0 
18aedb9 [email protected]{7}: checkout: moving from master to SSL 
e4a206b [email protected]{8}: checkout: moving from e4a206b20456d004b5ad19bb859e15f481df9b90 to master 
e4a206b [email protected]{9}: checkout: moving from master to master^0 
e4a206b [email protected]{10}: checkout: moving from d8b6feee2ae2595872d62ca2b25c01263b3bf74b to master 
d8b6fee [email protected]{11}: merge SSL: Merge made by the 'recursive' strategy. 
94e0f8d [email protected]{12}: commit: Support for os and badge count for ios 
e4a206b [email protected]{13}: checkout: moving from 18aedb908898083d8b9d6941ec59f981950a3846 to master^0 
18aedb9 [email protected]{14}: checkout: moving from bc071caacff35fca304aae97804fd9070d92913f to SSL^0 
bc071ca [email protected]{15}: commit: Added support for sell option 
e4a206b [email protected]{16}: checkout: moving from 18aedb908898083d8b9d6941ec59f981950a3846 to master^0 
18aedb9 [email protected]{17}: checkout: moving from e4a206b20456d004b5ad19bb859e15f481df9b90 to SSL^0 
e4a206b [email protected]{18}: checkout: moving from SSL to master^0 
18aedb9 [email protected]{19}: commit: SSL 

私は私が望んでいたコミットにハードリセットを行っている、それはまだ(私は本当に方法がわからない)ファイルが欠落しています。

+0

をコミットマスターには存在しますが、あなたの他の支店にはありますか? – Makoto

+0

「ここに行ったこと」が意味することを説明してください。実際にマスターブランチに変更をコミットした場合、それらの変更を失うことは非常に難しいです。あなたは 'git reset'をやりましたか?あなたはマスターをチェックしようとしましたか? –

+0

私は質問を更新しました。 –

答えて

1

git reflogに基づいて、git reset94e0f8d [email protected]{3}に設定したようです。

あなたは、単にリセットする前にコミットチェックアウトすることによって、任意の犯し作業を回復することができるはずです:git checkout [email protected]{4}

最後に一つの思考:あなたは「デタッチHEAD」の通知を受け取ったときに、いくつかの有用なガイダンスのためgit statusを実行します:

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

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

GitチェックアウトHEAD

新しいブランチ名-bは81f96abになりましたが...いくつかは、あなたが "ゴーン" と言うとき、必要な変更は、」上がらないMSG

+0

それは私がやったことです。ありがとう。 –

関連する問題