Ich habe ein Git-Repository auf dem Computer erstellt und es auf meinen Server geschoben. Dann ging ich in einen Ordner auf einem anderen Computer, der mit dem Inhalt des Repositorys zusammengeführt werden sollte.
Hier sind die genauen Schritte, die ich ausgeführt habe (ich habe es reproduziert): Auf dem ersten Repository:
%Vor%Auf der zweiten Seite (der Datei, wo Dateien gelöscht werden):
%Vor%Was ich erwartet hatte, war, dass Git diese Dateien ziehen würde und ich dann meine lokalen Dateien übernehmen und wieder hochschieben könnte. Aber jetzt sind meine lokalen Dateien weg. Hat git wirklich nur lokale Dateien ohne Warnung gelöscht (ich habe keine Force-Option o.ä. verwendet)?
Gibt es eine Möglichkeit, sie zurück zu bekommen oder ist es das beabsichtigte und erwartete Verhalten, nur nicht verfolgte Dateien zu entfernen?
Ausgabe von nur git status
sagt:
Ich habe diese Schritte einfach mit einem Testrepository reporduziert und passiert wie beschrieben: Die Datei "a" wird in das Repository Nummer zwei gezogen, aber die Datei "b" ist nicht verschwunden (nur a wird durch 'ls' angezeigt).
Nun, ich finde eine andere seltsame Sache.
In der Hilfe von git pull
gibt es einen solchen Satz wie folgt:
"Im Standardmodus ist git pull eine Abkürzung für git fetch gefolgt von git merge FETCH_HEAD "
Also verwende ich $git fetch
und dann $git merge FETCH_HEAD
anstelle von git pull origin master
oben. Dann, was für eine erstaunliche, Datei b ist immer noch da.
Also, ich weiß wirklich nicht, was git pull origin master
genau macht.
Ich habe auch eine Erklärung in
gesehendas ist "git merge findet, dass es keinen gültigen HEAD hat und daher einen Hard-Reset durchführt, der offensichtlich alle bereits vorhandenen Dateien überschreibt."
Aber ich bezweifle das wirklich, weil ich $git merge FETCH_HEAD
erfolgreich verwenden kann.
Wenn Sie die verlorenen Dateien finden möchten, können Sie Git sehen Ziehen Sie gelöschte nicht festgeschriebene Änderungen von @ellotheth
Tags und Links git