2013-02-21 7 views
7

Ich bin neu bei git, es tut mir leid, wenn diese Frage schon beantwortet wurde. Ich habe Probleme, die Antwort darauf zu finden.Switched Branch nach .gitignore und verlorenen .gitinored files

Ich wollte eine Reihe von Dateien ignorieren, die noch nie zuvor für eine Festschreibung festgeschrieben wurden, und die github-App verwendet, um sie auszuwählen und zu ignorieren. Ich wechselte für eine Weile in einen anderen Zweig und als ich in meine Zweigstelle zurückkehrte, waren meine ignorierten Dateien verschwunden.

Sind diese Dateien gelöscht?

Ich benutzte git checkout, um zurück zum Zweig zu wechseln und dann git status --ignored. Meine fehlenden Dateien sind nicht da.

+0

Git löscht Dateien nicht. Verwenden Sie den Befehl 'git ls-files' und prüfen Sie, ob Ihre Dateien aufgelistet sind. –

+1

Ich habe es versucht und ich habe meine Dateien nicht gesehen. Ich bin auf einem Mac, und ich konnte messages.sassc und meine anderen Dateien durch diese Suche finden. Das "c" am Ende ist jedoch kein normaler Teil der Erweiterung. –

+0

'git status' zeigt Ihre Dateien an? –

Antwort

1

Sie können dies tun, indem Sie git reflog -all verwenden, um den SHA-Code abzurufen, wenn die Github-App Ihre ignorierten Dateien automatisch gespeichert hat, bevor Sie in den anderen Zweig gewechselt haben. Siehe https://stackoverflow.com/a/8865242/2970321.

Zum Beispiel habe ich eine Pull-Anfrage (/pr/364) mit der App (SHA 2ba129d) abgerufen. Bevor ich wieder zu gh-pages wechselte, wurden meine ignorierten Dateien (SHA 36edfc6) gespeichert.

finding the SHA code of a dropped stash

So zu erholen, alles, was ich tun musste, war:

git checkout 36edfc6

Meine Dateien auf magische Weise wieder aufgetaucht, und ich konnte sie sicher manuell woanders verstauen, bevor sie wieder zu gh-pages Schalt nochmal.

1

git löscht keine Dateien, die es nicht interessiert, es sei denn, es wurde ausdrücklich darauf hingewiesen (in einigen Fällen von checkout -f oder clean). Da git nichts über sie weiß, kann es sie auch nicht retten. Benutze git stash, bevor du dich fortbewegst und mögliche Schäden verursachst. Überlegen Sie sorgfältig, welche Dateien in .gitignore gehen, fügen Sie alle nicht automatisch generierten Dateien zur Versionskontrolle hinzu.

+0

Es scheint (zumindest in neueren Versionen der github-App), dass ignorierte Dateien beim Wechsel zwischen den Zweigen automatisch gespeichert werden. Siehe meine Antwort. – alexw

+0

"alle nicht automatisch generierten Dateien zur Versionskontrolle hinzufügen." Ja! Die einzige Ausnahme können wirklich riesige Dateien wie Datenbank-Backups sein - in diesem Fall ist es am besten, sie in einem völlig anderen Ordner (oder einem permanent ignorierten Unterordner) zu speichern. – Venryx