.gitignore und "Die folgenden nicht verfolgten Arbeitsbaumdateien würden beim Auschecken überschrieben werden"
Also habe ich einen Ordner zu meiner .gitignore-Datei hinzugefügt.
Sobald ich einen git status
mache, sagt er mir
# On branch latest
nothing to commit (working directory clean)
Wenn ich jedoch versuche, die Zweige zu ändern, erhalte ich folgendes:
My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:
public/system/images/9/thumb/red-stripe.jpg
public/system/images/9/original/red-stripe.jpg
public/system/images/8/thumb/red-stripe-red.jpg
public/system/images/8/original/red-stripe-red.jpg
public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
public/system/images/7/thumb/red-stripe-dark.jpg
public/system/images/7/original/red-stripe-dark.jpg
public/system/images/7/original/DSC07833.JPG
public/system/images/6/thumb/red-stripe-bw.jpg
public/system/images/6/original/website-logo.png
public/system/images/6/original/red-stripe-bw.jpg
public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
public/system/images/5/original/logocompv-colored-squares-100px.png
public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
public/system/images/4/thumb/DSC_0001.JPG
public/system/images/4/original/logo.png
public/system/images/4/original/DSC_0001.JPG
public/system/images/4/original/2-up.jpg
public/system/images/3/thumb/logo2.gif
public/system/images/3/original/logo2.gif
public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
public/system/images/3/original/11002000962.jpg
public/system/images/2/thumb/Profile Pic.jpg
public/system/images/2/original/Profile Pic.jpg
public/system/images/2/original/02 Login Screen.jpg
public/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting
So sieht meine .gitignore-Datei aus:
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*
Wie bekomme ich das zum Laufen, so dass ich den Zweig wechseln kann, ohne diese Dateien zu löschen?
Wenn ich eine Änderung vornehme, wird sich das auf diese Dateien auswirken? Mit anderen Worten, wenn ich danach zu diesem Zweig zurückkehre, ist dann alles perfekt bis zu meinem letzten Commit?
Ich möchte diese Dateien nicht verlieren, ich möchte nur nicht, dass sie verfolgt werden.
788
3
**WARNUNG: es löscht nicht verfolgte Dateien, daher ist es keine gute Antwort auf die gestellte Frage.
Diese Meldung habe ich auch erhalten. In meinem Fall wollte ich die Dateien nicht behalten, also hat das für mich funktioniert:
git 2.11 und neuere Versionen
older git
Wenn Sie auch Dateien, die von git ignoriert werden, entfernen möchten, führen Sie den folgenden Befehl aus.
BE WARNED!!! DIES ZERSTÖRT HÖCHSTWAHRSCHEINLICH IHR PROJEKT, VERWENDEN SIE ES NUR, WENN SIE 100% WISSEN, WAS SIE TUN
git 2.11 und neuer
older git
http://www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x
bedeutet, dass ignorierte Dateien sowie Dateien, die Git unbekannt sind, ebenfalls entfernt werden.d" bedeutet, dass zusätzlich zu den nicht getrackten Dateien auch nicht getrackte Verzeichnisse entfernt werden.
-f
ist erforderlich, um die Ausführung zu erzwingen.Es scheint, als ob Sie die Dateien ignorieren wollen, obwohl sie bereits übertragen wurden. .gitignore hat keinen Effekt auf Dateien, die bereits im Projektarchiv sind, also müssen sie mit
git rm --cached
entfernt werden. Das--cached
wird verhindern, dass es irgendeine Auswirkung auf Ihre Arbeitskopie hat und es wird einfach als entfernt markiert, wenn Sie das nächste Mal übertragen. Nachdem die Dateien aus dem Projektarchiv entfernt wurden, verhindert .gitignore, dass sie wieder hinzugefügt werden.Sie haben aber noch ein anderes Problem mit Ihrer .gitignore, Sie verwenden übermäßig viele Platzhalter und das führt dazu, dass sie weniger übereinstimmt, als Sie es erwarten. Ändern Sie stattdessen die .gitignore und versuchen Sie dies.
Git teilt Ihnen mit, dass es Dateien (mit dem Namen
public/system/images/9/...
usw.) erstellen möchte, aber Sie haben bereits Dateien in diesem Verzeichnis, die nicht von Git verfolgt werden. Vielleicht hat jemand anderes diese Dateien dem Git-Repository hinzugefügt, und Sie haben zum ersten Mal zu diesem Zweig gewechselt?Wahrscheinlich gibt es einen Grund, warum diese Dateien in Ihrem Entwicklungszweig und nicht in Ihrem aktuellen Zweig sind. Vielleicht müssen Sie Ihre Mitarbeiter fragen, warum das so ist.
Das geht nicht, ohne die Dateien irgendwie verschwinden zu lassen. Du könntest
public
inmy_public
oder so umbenennen.Wenn Sie Ihre Änderungen committen, verliert Git sie nicht. Wenn du deine Änderungen nicht überträgst, wird Git sich sehr bemühen, die Arbeit, die du gemacht hast, nicht zu überschreiben. Das ist es, wovor Git Sie in der ersten Instanz hier warnt (als Sie versucht haben, den Zweig zu wechseln).