2017-06-11 3 views
0

を押す--force:上書きリポジトリ - 、私はコマンドを使用し、私は本当に大きな問題を抱えている

git push --force origin master 
git reflog 
f8037dd [email protected]{11}: commit (initial): doc 

今、私は最後の25回のコミットを復元することができますどのように、1コミットしていますか?おかげで助けてくれてありがとう:))

+0

現在のローカルブランチ、ローカルの別のブランチ、リモートのマスターブランチなどで、コミットされた場所の詳細を追加してください。彼らがあなたのマシンではなく遠隔地のマスターであった場合、回復することは困難または不可能かもしれません。コードの別のクローンからコミットを再度プッシュすることができれば理想的です。フィーチャーブランチを開発してマージすることで、次回の強制実行を避けることができます。 –

+0

Gerritを使用してプロジェクトをホストしています。 refの更新は、サーバ側のreposのreflogによって記録されます。サーバ管理者に助けを求めることができます。 – ElpieKay

答えて

0

私はあなたのローカルリポジトリに1つだけコミットし、なぜ強制的にリモートリポジトリをオーバーライドする必要があるのか​​分かりません。

git push --forceは、危険コマンドであり、注意しなければならないリモートのリポジトリを上書きします。

別のブランチが存在するのか、別の寄稿者がレポのコピーを持っていますか?

+0

ファイルに問題はありません。私はそれを持っていますが、ページgithubに履歴はありません。私はもう一つ地元のレポを持っています。 – Graku

+0

@Graku BTW GitHubはリポジトリのreflogを保存するので、最後のプッシュ前にコミットマスターポイントを簡単に回復できます。 – PetSerAl

+0

GUI gitで他のrepoを使用しましたが、このGUIはコミット後にすべて表示されます:D Soo lucky – Graku

0

回答は、決してpush --forceを絶対に使用しないでください。意識してリポジトリまたはその一部を破棄しない限り。

復旧方法あなたがpush -f後にローカルコピーを台無しにしなかった場合は、実行します。新しいタグの

git fsck --unreachable --dangling | sed -n -e '/^unreachable commit/{ s/unreachable commit \(.*\)/tag_\1 \1/; p} ' | xargs -L1 git tag 

ルック - gitkやgitgが役に立つかもしれ - それから回復。がんばろう。


ところで、私はちょうどあなたが、あなたは他のローカルレポを持っている他の答えの下で述べてきました気づきました。そのリポジトリに履歴がある場合、なぜコミットをプッシュしないのですか?

+0

GUI GITで自分のPCに他のsave repoを使用しました。 – Graku

関連する問題