Erklären Sie, welche Gitignore-Regel meine Datei ignoriert
Gibt es eine Möglichkeit zu sehen, warum einige Datei wird immer ignoriert von git (d.h., die in der Regel in eine .gitignore
Datei verursacht der Datei zu werden ignoriert)?
Vorstellen, ich habe dieses (oder ein sehr viel komplexeres Szenario mit Hunderten von Ordnern und zig .gitignore
Dateien:
/
-.gitignore
-folder/
-.gitignore
-subfolder/
-.gitignore
-file.txt
Wenn ich git add folder/subfolder/file.txt
git kann sich beschweren, es wird ignoriert:
The following paths are ignored by one of your .gitignore files:
folder/subfolder/file.txt
Use -f if you really want to add them.
Gibt es eine Möglichkeit zu wissen, welche von all den möglichen .gitignore
haben in der Regel ignorieren diese Datei, und zeigen auch die Regel? Wie:
The following paths are ignored by your folder/.gitignore file (line 12: *.txt)
folder/subfolder/file.txt
Use -f if you really want to add them.
Oder einfach nur:
$ git why-is-ignored folder/subfolder/file.txt
folder/.gitignore:12:*.txt
InformationsquelleAutor der Frage Carlos Campderrós | 2012-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen die Manpage für mehr details.
Originalantwort:
git derzeit nicht bieten so etwas. Aber nachdem ich Ihre Frage, die ich habe einige googeln und fand, dass bereits im Jahr 2009 diese Funktion wurde angefordert und teilweise umgesetzt. Nach dem Lesen des thread habe ich realisiert, wäre es nicht zu viel Arbeit um es richtig zu machen, so habe ich begonnen, einen patch und hoffe, es fertig in den nächsten Tag oder zwei. Ich werde über diese Antwort, wenn es fertig ist.
UPDATE: Wow, das war viel schwerer, als ich erwartet hatte. Die Innereien der
git
's ausschließen Handhabung sind ziemlich kryptisch. Wie auch immer, hier ein fast beendet Serie von commitsdie für die heutige upstreammaster
Zweig. Die test-suite ist zu 99% fertig, aber ich noch nicht fertig Handhabung der--stdin
option noch. Ich hoffe, ich schaff es dieses Wochenende, und dann meine patches auf den git-Mailingliste.In der Zwischenzeit, würde ich auf jeden Fall begrüßen testen aus wer ist in der Lage, das zu tun - nur Klon aus mein
git
Gabelschauen Sie sich diecheck-ignore
Zweig, und kompilieren Sie es als normal.UPDATE 2: Es ist vollbracht! Neueste version ist auf github nach oben, und ich habe vorgelegt der patch-Serie um die git-Mailingliste für peer-review. Mal sehen, was Sie denken ...
UPDATE 3: Nach mehreren Monaten hacking /patch reviews /Diskussionen /warten, ich freue mich, sagen zu können, dass dieses feature hat inzwischen git ' s
master
- Zweigund wird in der nächsten Version (1.8.2, voraussichtlich 8. März 2013). Hier ist diecheck-ignore
manual-Seite. Puh, das war viel mehr Arbeit als ich erwartet hatte!UPDATE 4:Wenn Sie daran interessiert, die ganze Geschichte darüber, wie diese Antwort entwickelt und die Funktion kam auch umgesetzt werden, überprüfen Sie heraus Folge #32 des GitMinutes podcast.
InformationsquelleAutor der Antwort Adam Spiers
Update git 2.8 (März 2016):
Siehe "Ein Weg, um überprüfen Sie
.gitignore
- Datei"Ergänzen, die
git check-ignore -v
unten beschrieben.Original Antwort: Sept 2013 (git 1.8.2, dann 1.8.5+):
git check-ignore
verbessert wieder in git-1.8.5/1.9 (Q4 2013):Sehen commit 8231fa6 von https://github.com/flashydave:
InformationsquelleAutor der Antwort VonC
Kann ich nichts finden, in der man-page, aber hier ist eine quick-and-dirty script, überprüfen Sie Ihre Datei in jedem übergeordneten Verzeichnis, um zu sehen, ob es sein kann, git-add ' ed. Führen Sie es in das Verzeichnis mit der Datei problem:
wo
STOP_DIR
ist die top-level-Verzeichnis des Git-Projekt undFILENAME
ist die problem-Datei-Namen (ohne Pfad). Es erstellt eine leere Datei mit dem gleichen Namen auf jeder Ebene der Hierarchie (wenn es nicht vorhanden ist) und versucht, einegit add -n
um zu sehen, ob es Hinzugefügt werden kann (bereinigt nach sich selbst). Es gibt so etwas wie:Dem Skript:
InformationsquelleAutor der Antwort edoloughlin
Hinzufügen, um die Haupt-Antwort der mit
git check-ignore -v filename
(danke BTW)Ich fand, dass mein .gitignore-Datei wurde blockiert alles, weil es war ein Zeilenumbruch nach einer wildcard, also ich hatte:
*
.sublime-project
als ein Beispiel. Ich einfach entfernt die newline, und voila! Es wurde behoben.
InformationsquelleAutor der Antwort rekordboy