Ich verstehe, dass eine Gitignore-Datei bestimmte Dateien aus der Versionskontrolle von Git verbirgt. Ich habe ein Projekt (LaTeX), das während der Ausführung viele zusätzliche Dateien (.auth, .dvi, .pdf, Protokolle usw.) generiert, aber ich möchte nicht, dass diese nachverfolgt werden.
Ich bin mir bewusst, dass ich es schaffen könnte (vielleicht sollte), damit all diese Dateien in einem separaten Unterordner im Projekt abgelegt werden, da ich den Ordner dann einfach ignorieren könnte.
Gibt es jedoch eine Möglichkeit, die Ausgabedateien im Stammverzeichnis des Projektbaums zu belassen und mit .gitignore alles außer den Dateien zu ignorieren, die ich mit Git verfolge? Etwas wie
# Ignore everything
*
# But not these files...
script.pl
template.latex
# etc...
Antworten:
quelle
wp/
), möchte aber einige Dateien, die sich tief in diesem Ordner befinden (zwp/path/to/some/location/*
. B. ) , NICHT ignorieren . Der einzige Weg, wie ich es zumgit add -f wp/path/to/some/location/*
!*/
Ausnahme!*/
Meine Güte , diese letzte Regel: macht den Unterschied in meinen vergeblichen Versuchen, eine.gitignore
Datei zum Laufen zu bringen. Vielen Dank.Wenn Sie den gesamten Inhalt eines Verzeichnisses mit Ausnahme einer darin enthaltenen Datei ignorieren möchten, können Sie für jedes Verzeichnis im Dateipfad ein Regelpaar schreiben. ZB .gitignore, um den pippo-Ordner mit Ausnahme von pippo / pluto / paperino.xml zu ignorieren
.gitignore
quelle
foo
undfoo/*
sind nicht gleich. Damit dies funktioniert, Sie müssen verwendenfoo/*
für den BasisordnerSie möchten
/*
anstelle von*
oder*/
in den meisten Fällen verwendenDie Verwendung
*
ist gültig, funktioniert jedoch rekursiv. Von da an wird es nicht mehr in Verzeichnisse schauen. Die Leute empfehlen!*/
, Verzeichnisse erneut auf die Whitelist zu setzen, aber es ist tatsächlich besser, den Ordner der höchsten Ebene mit einer schwarzen Liste zu versehen/*
Der obige Code würde alle Dateien außer ,, und und alles , was in diesen letzten beiden Ordnern enthalten
.gitignore
istREADME.md
, ignorieren . (Und und Dateien werden in diesen Ordnern ignoriert.)folder/a/file.txt
folder/a/b1/
folder/a/b2/
.DS_Store
*.log
Natürlich könnte ich zB
!/folder
oder!/.gitignore
auch tun .Weitere Informationen: http://git-scm.com/docs/gitignore
quelle
.DS_Store
Dateien nicht ignoriert, aber über die Befehlszeile ist dies kein Problem. Um dies zu umgehen, musste ich die**/.DS_Store
folgenden Regeln verschieben./*
dann!/nested/folder/*
(oder das Äquivalent!/nested/folder
) , ohne dabei!/nested/
oder!/nested
zuerst! (und wahrscheinlich/nested/*
dazwischen). Ein Trick, an den Sie sich erinnern sollten, ist, wenn Sie einen tief verschachtelten Unterordner auf die Whitelist setzen, müssen Sie die Kinder in jedem Unterordner ganz nach oben schwärzen, und diese schwarzen Listen enden mit dem "Schrägstrich" ...Ein bisschen genauer:
Beispiel: Alles ignorieren
webroot/cache
- aber behaltenwebroot/cache/.htaccess
.Beachten Sie den Schrägstrich (/) nach dem
cache
Ordner:FEHLER
WERKE
quelle
quelle
Um einige Dateien in einem Verzeichnis zu ignorieren, müssen Sie dies in der richtigen Reihenfolge tun :
Ignorieren Sie beispielsweise alles im Ordner "application" außer index.php und Ordner "config" und achten Sie auf die Reihenfolge .
Sie müssen negieren wollen, was Sie zuerst wollen.
FEHLER
application/*
!application/config/*
!application/index.php
WERKE
!application/config/*
!application/index.php
application/*
quelle
git status
zu überprüfen, ob Ihre Änderungen.gitignore
wie erwartet funktionierengit status
Sie nicht wissen, worauf es ankommt und was ignoriert wird, wie können Sie dann wissen, ob dies funktioniert?Sie können verwenden
git config status.showUntrackedFiles no
und alle nicht verfolgten Dateien werden vor Ihnen ausgeblendet. Sieheman git-config
für Details.quelle
Um einen Ordner von .gitignore auszuschließen, können Sie Folgendes tun.
Dadurch werden alle darin enthaltenen Dateien / Unterordner mit
bower_components
Ausnahme von ignoriert/highcharts
.quelle
Es gibt eine Reihe ähnlicher Fragen dazu, daher werde ich das posten, was ich zuvor geschrieben habe:
Die einzige Möglichkeit, dies auf meiner Maschine zum Laufen zu bringen, bestand darin, es folgendermaßen zu tun:
Beachten Sie, wie Sie Inhalte für jede Ebene, die Sie einschließen möchten, explizit zulassen müssen. Wenn ich also Unterverzeichnisse 5 tief unter Themen habe, muss ich das noch formulieren.
Dies ist aus @ Yarins Kommentar hier: https://stackoverflow.com/a/5250314/1696153
Dies waren nützliche Themen:
Ich habe es auch versucht
und
**/wp-content/themes/**
oder
/wp-content/themes/**/*
Nichts davon hat auch für mich funktioniert. Viel Spur und Irrtum!
quelle
Ich hatte ein Problem mit dem Unterordner.
Funktioniert nicht:
Werke:
quelle
Ich habe alle Antworten wie oben angegeben ausprobiert, aber keine hat für mich funktioniert. Nach dem Lesen der Gitignore-Dokumentation ( hier ) ich fest, dass die Dateinamen im Unterordner nicht indiziert werden, wenn Sie zuerst einen Ordner ausschließen. Wenn Sie also das Ausrufezeichen anschließend verwenden, um eine Datei einzuschließen, wird sie nicht im Index gefunden und daher nicht in Ihrem Git-Client enthalten.
Auf diese Weise konnte die Lösung gefunden werden. Ich begann damit, Ausnahmen für alle Unterordner in meinem Ordnerbaum hinzuzufügen, damit es funktioniert, was eine verdammt gute Arbeit ist. Danach konnte ich die detaillierte Konfiguration auf die folgende Konfiguration komprimieren, was der Dokumentation etwas widerspricht.
Working .gitignore:
Als Ergebnis sehe ich in meinem Git-Client, dass nur die beiden Dateien im Ordner Pro / 3rdparty / domain / modulename / für das nächste Commit bereitgestellt werden, und genau das habe ich gesucht.
Wenn Sie mehrere Unterordner desselben Ordners auf die Whitelist setzen müssen, gruppieren Sie die Ausrufezeichen unter der Ausschlussanweisung wie folgt:
Sonst funktioniert es nicht wie erwartet.
quelle
Das hat bei mir funktioniert, ich wollte nur ein Cordova-Plugin für das Repo festlegen:
quelle
Ich weiß, dass ich zu spät zur Party komme, aber hier ist meine Antwort.
Wie @Joakim sagte, um eine Datei zu ignorieren, können Sie etwas wie das Folgende verwenden.
Wenn sich die Datei jedoch in verschachtelten Verzeichnissen befindet, ist es etwas schwierig, die Regeln manuell zu schreiben.
Zum Beispiel, wenn wir alle Dateien in einem
git
Projekt überspringen möchten , aber nichta.txt
die, in denen sich befindetaDir/anotherDir/someOtherDir/aDir/bDir/cDir
. Dann wird unser.gitignore
Wille so etwas seinDas oben angegebene
.gitignore
Datei überspringt alle Verzeichnisse und Dateien außer!aDir/anotherDir/someOtherDir/aDir/bDir/cDir/a.txt
Wie Sie vielleicht bemerkt haben, ist es schwierig, diese Regeln zu definieren.
Um diese Hürde zu lösen, habe ich eine einfache Konsolenanwendung namens git-do-not-ignore erstellt, die die Regeln für Sie generiert. Ich habe das Projekt in Github mit detaillierten Anweisungen gehostet .
Anwendungsbeispiel
Ausgabe
Es gibt auch eine einfache Web - Version hier
Vielen Dank.
quelle
Ich habe Jquery und Angular von der Laube. Bower installierte sie in
Die minimierte Abfrage befindet sich im
dist
Verzeichnis und der Winkel befindet sich imangular
Verzeichnis. Ich brauchte nur minimierte Dateien, um sie auf github zu übertragen. Einige Manipulationen an .gitignore und das ist es, was ich zaubern konnte ...Hoffe, jemand könnte dies nützlich finden.
quelle
So habe ich es gemacht:
Verwenden Sie
gig status -u
diese Option , um einzelne Dateien in nicht verfolgten Verzeichnissen rekursiv anzuzeigen. Dabei werdengit status
nur Ordner angezeigt, die Sie zu der Annahme verleiten könnten, dass alles in ihnen verfolgt wurdequelle
Einfache Lösung , wenn Sie brauchen , um alles außer paar Dateien und einige ignorieren Root - Ordner:
Die Magie befindet sich in
/*
(wie oben beschrieben) und ignoriert alles im (Stamm-) Ordner, ABER NICHT rekursiv.quelle
Ich hatte auch einige Probleme mit der Negation einzelner Dateien. Ich konnte sie festschreiben, aber meine IDE (IntelliJ) beschwerte sich immer über ignorierte Dateien, die verfolgt werden.
Zeigte die beiden Dateien an, die ich auf diese Weise ausgeschlossen habe:
Am Ende hat das bei mir funktioniert:
Der Schlüssel war zuerst die Negation des Ordners
typo3conf/
.Es scheint auch, dass die Reihenfolge der Aussagen keine Rolle spielt . Stattdessen müssen Sie alle Unterordner explizit negieren, bevor Sie einzelne Dateien darin negieren können.
Der Ordner
!public/typo3conf/
und derpublic/typo3conf/*
Ordnerinhalt sind zwei verschiedene Dinge für .gitignore.Toller Thread! Dieses Problem hat mich eine Weile gestört;)
quelle
Bisher hat bei mir nichts funktioniert, da ich versucht habe, ein Glas aus lib hinzuzufügen.
Das hat nicht funktioniert:
Das hat funktioniert:
quelle
Ich habe das zum Laufen gebracht
quelle
Hatte das ähnliche Problem wie OP, aber keine der 10 besten Antworten hat tatsächlich funktioniert .
Ich habe endlich folgendes herausgefunden
Falsche Syntax:
Richtige Syntax:
Erklärung von der gitignore-Manpage :
Erweitertes Beispiel:
$ Baum.
$ cat .gitignore
$ git status --untracked-files --ignored
quelle
Kern
Und wahrscheinlich enthalten:
Referenz
Von https://git-scm.com/docs/gitignore :
quelle
Ich habe anscheinend etwas gefunden, das für mich funktioniert hat und das sonst niemand erwähnt hat.
Grundsätzlich scheint es zu negieren, dass ein Unterverzeichnis ignoriert wird. Sie müssen zwei Einträge haben, einen für das Unterverzeichnis selbst
!subdir/
und einen weiteren, der auf alle Dateien und Ordner darunter erweitert wird!subdir/**/*
quelle