2017-10-05 22 views
0

スタックに関しても同様の質問が表示されますが、私の正確な状況に対処するとは思えません。git stashを元に戻すと、git pull

誤ってgit stashを実行してかなりの量のコードを上書きしてしまいました。プロジェクト内のサブディレクトリでこれらのコマンドを実行したところ、同僚がコードを追加していたので、その変更だけを取り出すことにしました。しかし、それは私が開発していたサブディレクトリの古いバージョンを引っ張ってしまったので、少なくとも1日かそれ以上の作業を失ってしまった。

私の質問:ローカルファイルに戻す方法はありますか?私は自分の変更をコミットしていないので、ローカルマシン上にあったもの以外の他の記録はありません。

+1

変更を保存しましたか?次に、変更を再度取得するためにstashを再適用するだけですか?もちろん、それ以上の操作を行う前にローカルのレポをバックアップしてください。 – CodeCaster

答えて

1

質問を正しく読んだ場合は、git pullを実行する前にgit stashでした。あなたが隠れているとき、Gitは作業ディレクトリーとステージの両方への変更をカバーするために2回(時には3回)コミットを作成します。隠しは、この意味で一種の完全なスナップショットです。

リルースしなかったものの、マージしたと仮定すると、ブランチの上に新しいシングルマージコミットが存在するはずです。これを確認するには、git logと入力して検査します。

私はあなたがいた場所に戻ってあなたを取得するには、ちょうどあなたのスタッシュを適用し、その後、悪いコミットすることをニューキング、と提案している。これは、両方の作業ディレクトリとステージで、コミット元にあなたを残しする必要があり

git checkout yourBranch # assuming this happened on yourBranch 
git reset --hard HEAD~1 
git stash apply 

彼らがいた状態でも。

+0

私のパニックでは、仕事をしていた「git stash apply」と言った同僚にも尋ねました。私はこれが良い答えだと思う。 – Sledge

+0

@Sledgeもちろん、いつでも適用することができますが、実際にそのプルを行うつもりがない場合は、隠しを適用するために_where_(つまりコミットする)という別の問題もあります。 –

関連する問題