Bevor irgendetwas anderes tun, tun Sie bitte die folgenden drei Schritte - ein Backup Ihrer lokalen Repo, sagen die anderen Kerl zu sichern sein, und Sicherung der Remote-Repo, wie sie jetzt sind. Nichts Besonderes, nur Strg + C, Strg + V würde tun. Machen Sie das für Ihr gesamtes Projekt, also sichern Sie auch den Arbeitsbaum. Wenn Sie keinen direkten Zugriff auf den Remote-Server haben, müsste ein git clone
ausreichen, obwohl ich eine echte Verzeichniskopie bevorzugen würde.
Sobald Sie das getan haben, kann der andere Typ git push -f
verwenden, um seinen Zweig neu zu laden. Wenn er neue Commits hat, müssen Sie herausfinden, welcher Commit zuletzt von ihm gepusht wurde, aber ich bin ziemlich sicher, dass keine tatsächlichen Commits verloren gehen. Wenn der andere Typ git pull -f
erledigt hat, kann er auch git reflog
verwenden, um seine lokale Niederlassung wiederherzustellen.
Da Sie Github verwenden, sehen Sie möglicherweise auch https://stackoverflow.com/a/35273807/492336. Anscheinend gibt es eine Github's Events API, die nützlich sein könnte.
... Tu 'push -f' nicht. Wenn git sich über Konflikte beschwert, nehmen Sie an, dass es am besten weiß und die Konflikte beheben –
@ashoalm: Es gibt keinen anderen Weg? –
Kennst du den Hash des verlorenen Commits? Wird diese Festschreibung nach dem Abruf in Ihrem lokalen Repo fortgesetzt? –