Versuchen Sie es zunächst auf die übliche Weise:
git reset HEAD --hard # To remove all not committed changes!
git clean -fd # To remove all untracked (non-git) files and folders!
Warnung : Die oben genannten Befehle können nur dann zu Daten-/Dateiverlusten führen, wenn Sie sie nicht übertragen haben! Wenn Sie sich nicht sicher sind, machen Sie zuerst ein Backup Ihres gesamten Repository-Ordners.
Ziehen Sie dann erneut daran.
Wenn das nicht hilft und Sie sich nicht um Ihre nicht verfolgten Dateien/Verzeichnisse kümmern (machen Sie vorsichtshalber zuerst ein Backup), versuchen Sie die folgenden einfachen Schritte:
cd your_git_repo # where 'your_git_repo' is your git repository folder
rm -rfv * # WARNING: only run inside your git repository!
git pull # pull the sources again
Dadurch werden alle Git-Dateien ENTFERNT (mit Ausnahme von .git/
dir, wo Sie alle Commits haben) und ziehen Sie es erneut.
Warum git reset HEAD --hard
in einigen Fällen scheitern könnte?
-
Benutzerdefinierte Regeln in .gitattributes file
Mit eol=lf
Regel in .gitattributes konnte dazu führen, dass Git einige Datei-Änderungen durch die Umwandlung von CRLF-Zeilenenden in LF in einigen Textdateien veränderte.
Wenn das der Fall ist, müssen Sie diese CRLF/LF-Änderungen festschreiben (indem Sie sie in git status
), oder versuchen Sie es: git config core.autcrlf false
sie vorübergehend zu ignorieren.
-
Dateisystem-Inkompatibilität
Wenn Sie ein Dateisystem verwenden, das keine Berechtigungsattribute unterstützt. Ein Beispiel: Sie haben zwei Repositories, eines unter Linux/Mac ( ext3
/ hfs+
) und ein weiteres auf FAT32/NTFS basierendes Dateisystem.
Wie Sie sehen, gibt es zwei verschiedene Arten von Dateisystemen, so dass dasjenige, das keine Unix-Berechtigungen unterstützt, grundsätzlich keine Dateiberechtigungen auf einem System zurücksetzen kann, das diese Art von Berechtigungen nicht unterstützt, also egal wie --hard
Sie versuchen es, Git entdeckt immer einige "Änderungen".
349 Stimmen
git reset --hard origin/branch_to_overwrite
54 Stimmen
Jeder, der dies liest und denkt, dass er Dateien verlieren könnte, ich war in dieser Position und fand, dass der Puffer von Sublime Text mich gerettet hat - wenn ich an etwas arbeite, dann versehentlich alles lösche, indem ich versuche, ein ähnliches Problem wie dieses zu lösen oder indem ich eine Antwort auf diese Frage benutze und die Dateien in Sublime geöffnet hatte (was eine gute Chance ist), dann sind die Dateien immer noch in Sublime, entweder gerade dort oder in der Undo-Historie
6 Stimmen
Im Grunde genommen sollten Sie nur nach dem ersten Checkout einen Pull aus der Entwicklung durchführen -b. machen Sie Ihre Arbeit und pushen Sie dann wieder zurück.
5 Stimmen
Kurze Antwort: Löschen Sie den Zweig und legen Sie ihn neu an. 1. Zweig löschen:
git branch <branch> -D
2. Zurücksetzen auf einen Commit vor dem Konflikt:git reset <commit> --hard
3. Legen Sie den Zweig neu an:git branch <branch>
4. Stellen Sie die Verfolgung zum Server ein:git --set-upstream-to=origin/<branch> <branch> 5. Pull:
git pull`6 Stimmen
So ändern Sie alle CRLF- in LF-Endungen (beginnen Sie sauber)
git config core.autocrlf false; git ls-files -z | xargs -0 rm; git checkout .
2 Stimmen
Vielleicht suchen Sie stattdessen nach dieser Frage: statt stackoverflow.com/q/1628088/1148030 "Zurücksetzen des Zweigs des lokalen Repositorys, so dass er genauso ist wie der Zweig des entfernten Repositorys HEAD" Zum Beispiel, wenn das entfernte Repository gepusht wurde und Sie es zurückziehen und die vorherige Version des Zweigs, die Sie haben, verwerfen wollen. (Einige andere Fragen verweisen auf diese Frage als ihr Duplikat, aber ich denke, sie sollten auf diese andere Frage verweisen).
0 Stimmen
Manuelles Löschen aller Dateien und Ordner aus dem lokalen Repository. Führen Sie dann
git checkout <branch> && git add -A . && git reset --hard origin/<branch> && git pull
. Siehe stackoverflow.com/a/65239330 .0 Stimmen
Es gibt definitiv eine Antwort darauf, denn ich habe es aus Versehen getan. Jetzt sind viele Wochen Arbeit verloren :(
0 Stimmen
Möglicherweise möchten Sie einfach Ihren lokalen Ordner löschen und ihn erneut von Ihrem Git-Repository herunterladen, indem Sie
git clone <http://github.com/your_user/your_repository.git>
0 Stimmen
Wenn Sie es in einem Skript verwenden wollen, lesen Sie meine Antwort: stackoverflow.com/questions/1125968/