gitignore und "Die folgende nicht arbeiten-Baum-Dateien, die überschrieben würden, die von der Kasse"
Also ich habe einen Ordner auf meinem .gitignore-Datei.
Sobald ich eine git status
sagt es mir
# On branch latest
nothing to commit (working directory clean)
Jedoch, wenn ich versuche es zu ändern Zweige bekomme ich die folgende:
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
Dies ist, was mein .gitignore-Datei sieht wie folgt aus:
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*
Wie bekomme ich diese zu arbeiten, so kann ich wechseln Zweige ohne das löschen dieser Dateien?
Wenn ich eine änderung vornehmen, wird es auf die Dateien? In anderen Worten, wenn ich kam zurück zu diesem Zweig danach würde alles perfekt sein, denn bis zu meiner letzten commit?
Ich will nicht verlieren diese Dateien, ich möchte nur nicht, dass Sie verfolgt wird.
- wenn Sie wirklich kümmern sich nicht um diese Dateien: git checkout -f <branch> in Meinem Fall die Dateien generiert werden, die in den build-Prozess, so dass ich coudln ' T Pflege weniger
- Manchmal passiert, wenn Sie "git checkout' (ohne Zweig-name). Zu beheben, tun Sie 'git checkout branchname'
- Trennen, aber kritisch zu Fragen: warum tritt dieser Fehler bei allen auftreten? warum nicht git wechseln Sie einfach zwischen den Zweigen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, wie Sie wollen, dass die Dateien ignoriert, aber Sie wurden bereits engagiert. .gitignore hat keine Auswirkung auf Dateien, die bereits in der repo, so dass Sie entfernt werden müssen, um mit
git rm --cached
. Die--cached
wird verhindern, dass es irgendwelche Auswirkungen auf Ihre Arbeitskopie und es wird nur eine Marke entfernt, die nächste Zeit, die Sie Begehen. Nachdem die Dateien werden entfernt, aus der repo dann das .gitignore wird, die verhindern, dass wieder Hinzugefügt.Aber Sie haben ein anderes problem mit Ihr .gitignore, Sie sind übermäßig mit wildcards und seine wodurch es zum match weniger, als Sie es erwarten. Stattdessen können das ändern .gitignore und versuchen, diese.
git rm --cached
wird nicht einen Unterschied machen, werden diese Dateien nicht im aktuellen Zweig. Für diese Fehler, die ich denke, die user statt die Bedürfnisse an und verfolgen Sie @Greg Hewgill Antwort - "verschieben von Arbeitskopie, Schalter, Filialen, und verschieben Sie Sie zurück".your files would be overwritten
mitfatal: pathspec 'test/node_modules' did not match any files
wenn ichgit rm -r --cache test/node_modules
? Ich kann nicht ziehen, weil der die Nachricht überschrieben und kann nicht entfernen, weil git nicht finden können, Sie (Sie sind es)ACHTUNG: es löscht nicht die Dateien, so ist es nicht eine großartige Antwort auf die Frage gestellt.
Ich traf diese Nachricht als gut. In meinem Fall wollte ich nicht, die Dateien zu behalten, so dass dies für mich gearbeitet:
git 2.11 und neuere
älteren git
Wenn Sie wollen auch zum entfernen von Dateien von git ignoriert, dann folgenden Befehl ausführen.
GEWARNT WERDEN!!! DIESE WAHRSCHEINLICH ZERSTÖRT IHR PROJEKT, VERWENDEN SIE NUR, WENN SIE 100% WISSEN, WAS SIE TUN
git 2.11 und neuere
älteren git
http://www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x
bedeutet ignoriert-Dateien werden auch entfernt, sowie die Dateien unbekannt git.-d
bedeutet entfernen Sie nicht die Verzeichnisse zusätzlich zu nicht verfolgte Dateien.-f
erforderlich ist, um ihn zu zwingen, zu laufen.git clean -dfxn
odergit clean -dfx --dry-run
git ls-files --others --exclude-standard
und nichts aufgeführt ist, es ist mehr in der Regel sicher zu verwenden, diese Antwort. Für mich, ich hatte eine Menge nicht .DS_Storesgit clean -dfxn
zuerst zu sehen, welche Dateien betroffen sein werden. weint leise-x
option tut mir wehNur zwingen es :
git checkout -f another-branch
error: pathspec 'mybranch' did not match any file(s) known to git.
git branch --all
. Es sieht aus wie das repository nicht mit mybranch oder Sie nicht ziehen mybranch. Der zweite Fall ist, konnten Siegit pull origin mybranch
auf Ihrem lokalen host.Wenn Sie auf OS X, es kann sein, weil eine Datei den Namen hat, bestimmte Zeichen, ändern Fall. Versuchen Sie, die folgenden config-option:
git rebase
als gut. Danke.Git ist Ihnen zu sagen, Sie will zum erstellen von Dateien (benannt
public/system/images/9/...
etc), aber Sie bereits vorhandene Dateien in diesem Verzeichnis, die nicht von Git verwaltet. Vielleicht hat jemand anderes Hinzugefügt, die Dateien zum Git-repository, und dies ist das erste mal, wenn Sie gewechselt haben, diesen Zweig?Wahrscheinlich gibt es einen Grund, warum diese Dateien in Ihrem
develop
Zweig, aber nicht im aktuellen branch. Sie kann Sie bitten, Ihren Mitarbeitern, warum das so ist.Können Sie es nicht tun, ohne dass die Dateien verschwinden irgendwie. Könnte man umbenennen
public
zumy_public
oder etwas für jetzt.Wenn Sie Ihre änderungen übergeben, Git, gehen diese nicht verloren. Wenn Sie nicht Ihre änderungen, dann Git versuchen wirklich hart nicht zu überschreiben, die Arbeit, die Sie getan haben. Das ist, was Git ist die Warnung, die Sie über die in der ersten Instanz hier (wenn Sie versucht zu wechseln, Zweige).
Gibt es einen Befehl für diese heikle Aufgabe (dauerhaft löschen von nicht verfolgte Dateien)
Dann
git pull
tun.Dieser arbeitete für mich.
Leider weder
git rm --cached
odergit clean -d -fx ""
hat es für mich.Meine Lösung endete, schob meine Niederlassung auf remote-Klonen eine neue repo, dann tun meine verschmelzen in der neuen repo. Andere Personen Zugriff auf das repo hatte, das gleiche zu tun.
Moral von der Geschichte: verwenden Sie ein
.gitignore
Datei von Anfang an.Für diejenigen, die etwas weniger weit reichend als Scott Schafer Antwort,
wird wahrscheinlich funktionieren. Ich hoch vorschlagen ausgeführt
ersten. Dieser Befehl wird die Ausgabe einer Liste von Dateien, die Git entfernt werden, wenn Sie laufen
git clean -f
werden, und es könnte sparen Sie sich die Schmerzen, versehentlich entfernen etwas, was Sie nicht wollen.Sehen dieser Stapel Oveflow Antwort oder die docs für weitere Informationen über
git clean
.Wenn Sie wollen, um schnell zu lösen diese Frage,können Sie diesen Befehl verwenden:
.gitignore
afaik.Ich hatte das gleiche problem beim Check-out an einem Zweig basiert auf einer früheren commit. Git weigerte sich, zur Kasse, weil der nicht verfolgte Dateien.
Ich eine Lösung gefunden habe und ich hoffe, es wird Ihnen auch helfen.
Hinzufügen die betroffenen Verzeichnisse zu
.gitignore
und die Ausstellung$ git rm -r --cached
auf Ihnen ist offenbar nicht genug.Nehme an, Sie wollen eine Niederlassung einer früheren Begehen K zu testen, ein paar Sachen und kommen zurück, um die aktuelle version. Ich würde es tun, in den folgenden Schritten:
Setup die nicht verfolgte Dateien:
Bearbeiten Sie die
.gitignore
und gelten$ git rm -r --cached
auf die Dateien und Verzeichnisse, die Sie wollen, die git zu ignorieren. Fügen Sie auch die Datei.gitignore
sich.gitignore
und vergessen Sie nicht, Problem$ git rm -r --cached .gitignore
. Dadurch wird sichergestellt, das die ignorieren-Verhalten von git Blätter gleichen in der früheren verpflichtet.Commit die änderungen, die Sie soeben gemacht:
$ git add -A
$ git commit
Speichern Sie die aktuelle log, sonst kann es Probleme kommen zurück, um die aktuelle version
$ git log > ../git.log
Hard-reset, um die commit-K
$ git reset --hard version_k
Erstellen Sie einen Zweig auf der Basis der commit-K
$ git branch commit_k_branch
Kasse in dieser Filiale
$ git checkout commit_k_branch
Tun Ihre Sachen und verpflichten Sie
Kasse zurück in den master wieder
$ git checkout master
Zurücksetzen, um die aktuelle Version wieder
$ git reset current_version
oder$ git reset ORIG_HEAD
Jetzt können Sie die reset hart auf den KOPF
git reset --hard HEAD
HINWEIS!
Überspringen Sie nicht den nächsten, letzten Schritt (wie e. g.
$ git reset --hard ORIG_HEAD
) ansonsten nicht verfolgte Dateien git beschwerte sich über verloren.
Ich auch sicher, dass die Dateien git beschwert wurden nicht gelöscht. Ich kopierte Sie auf eine text-Datei und der Befehl ausgegeben wurde
$ for i in $(cat ../test.txt); do ls -ahl $i; done
Wenn Sie zur Kasse, um den Zweig oben erwähnt wieder, vergessen Sie nicht, Problem
$ git status
um sicherzustellen, dass keine unerwünschten änderungen angezeigt.Passiert das mir auf einer Windows 8 system, mit Git von der Kommandozeile aus. Der rest von meinem team, verwendet TFS, und ich benutze Microsoft git-tf push/pull zwischen TFS und meine lokalen Git-repository.
Stellte sich das problem aufgrund einiger Dateien mussten umbenannt wurde, nur ändern Sie Ihren Fall. Was offenbar passierte, war dies:
git status
ich konnte nicht sehen, alle änderungen, da in der Windows-Eingabeaufforderung die Dateinamen sind identisch.Die einfachste Lösung für mich war:
git checkout
einer früheren version des Projekts, gut, bevor Sie diese Dateien wurden immer Hinzugefügt.git checkout
die neueste version des Projekts, mit der richtigen Datei-Gehäuse.In meinem Fall war das problem mit der teilmodule.
master
wurde fusioniert mit einer anderen Niederlassung, die einen neuen submodule für das Projekt. Den Zweig habe ich versucht an der Kasse hatte es nicht, das ist, warum git klagte über nicht verfolgte Dateien und keine der anderen vorgeschlagenen Lösungen bei mir funktioniert. Ich gezwungen, die Kasse zu meinem neuen Zweig, und zog master.git checkout -f my_branch
git pull origin master
git submodule update --init
War ich auch vor einem ähnlichen Problem und ich habe versucht, alle Lösungen oben gepostet, aber es hat nicht funktioniert
Das Problem wurde verursacht, wenn ich umbenannt meine
onMusicUpdateListener.java
zuOnMusicUpdateListener.java
imdevelop
Zweig.Nun
master
hatteonMusicUpdateListener.java
und
develop
hatte die gleiche Datei wieOnMusicUpdateListener.java
Nun, wenn ich umgeschaltet, um es zu meistern gab mir eine Fehlermeldung
und dann ist es
aborted
.Um dieses Problem zu lösen, ich gewaltsam
checked out
master
Zweigund dann in mein
onMusicUpdateListener.java
zuOnMusicUpdateListener.java
,committed
es und dannmerged
es mitdevelop
Zweig.Dann habe ich aktualisiert meine
develop
Zweig vonmerging
es inmaster
und jetzt ist alles wieder normal und problem ist gelöst.Diese beiden Funktionen(git rm --cached,
git checkout -f andere-Zweig) funktionierte NICHT für mich.
Statt, die ich physisch entfernt die Datei (in eclipse) als das, was Git sagt Ihnen zu tun; Bitte verschieben oder entfernen Sie diese, bevor Sie wechseln können äste.
und dann füge ich/es begangen.
und dann habe ich gezogen und es hat geklappt!
In meinem Fall
git rm --cached
hat nicht funktioniert.Aber ich habe es mit einem
git rebase
Dies könnte ein Berechtigungsproblem,
änderung der Eigentumsverhältnisse,
2 Dateien mit dem gleichen Namen, aber anderer Fall könnte das Problem sein.
Löschen können Sie auf diese Dateien oder benennen Sie Sie um. Ex:
Dateien zu verschieben, statt löschen
Einen Weg, um Dateien zu löschen ist, um Sie zu verschieben, statt. Zum Beispiel:
Wenn Sie umbenannt haben, eine Datei lokal, und führen Sie dann eine
pull
ist, zeigt es diese Fehlermeldung.das ist leicht zu lösen, git ist zu sagen, dass Sie die gleichen Dateien in beiden Zweigen, daher müssen Sie löschen die Dateien aus der master-branch, dann werden Sie in der Lage sein zu verschmelzen:
git merge "Ihrer Filiale"
Ich hoffe, es funktioniert für Sie, ich nur gelöst, mein Fehler.
mein Fehler war:
Fehler: Die folgenden nicht arbeiten-Baum-Dateien, die überschrieben würden, indem Sie Zusammenführen:
.vs/slnx.sqlite
Bitte verschieben oder entfernen Sie diese, bevor Sie verschmelzen.
Abbruch
Nun, es funktioniert!
In meinem Fall .vs/slnx.sqlite wurde, generiert visual studio, die ich brauchte, um es zu schließen, bevor Sie es löschen.
In meinem Fall, ich war zu sehen, diesen Fehler, weil ich bin mit einem populären open-source-CMS und das Verzeichnis, die verursacht wurde Probleme war das uploads Verzeichnis, auf das die CMS schreibt.
Also was er sagte ist, dass es Dateien, die Sie nicht haben, aber die können Sie nicht bekommen, aus der Versionsverwaltung.
Ich bin greifen alle Dateien von der live-site auf meinem lokalen, dann werde ich dies überprüfen, in der repo in der Hoffnung, dass dies das Problem behebt.
Löschen .gitignore Datei aus appname/gen/ um dieses Problem zu lösen.
Ging ich einfach zu der Datei system gelöscht und die Datei direkt, dann weiter mit git checkout-und es funktionierte.
Habe ich das problem auftreten, mehrere Male, und es kann bezogen werden, um Entwicklern dabei zu löschen, drücken Sie erneut hinzufügen, push oder so etwas.
Meisten der Antworten prüfen, löschen oder entfernen die Dateien, das ist der einfache Weg. Aber manchmal Sie nicht wollen, um loszuwerden, die lokale Dateien. Aber merge mit Strategie, so git hat die Lösung für diese zu ;
Nur die Dateien löschen oder umbenennen.
z.B.
Musste ich umbenennen/löschen ajax/product.php und ajax/produtPrice.php.
Mach dir keine sorgen, git pull, bringt Sie zurück. Ich schlage vor, Sie Sie umbenennen anstatt Sie zu löschen, weil Sie vielleicht verlieren einige änderungen.
Wenn das nicht hilft, dann löschen Sie die gesamte Branche, und erstellen Sie es erneut, und führen Sie dann
git pull origin remotebranch
Speichern, um die geänderten Dateien und die Verwendung der modifizierten Inhalte später.
Ich fand diesen Fehler, während ich versuchen, das Auschecken eines Zweiges und wenn Sie versuchen, Stellungswechsel.
Versuchen Git stash
git stash
Überprüfen, ob alle Ordner-name mit " /" oder irgendwelche speziellen symbol umbenennen, die Ordnern.
Dann haben Sie gerade Klonen Sie das repository an einen anderen Ort.