Ich habe eine Verzeichnisstruktur wie diese:
.git/
.gitignore
main/
...
tools/
...
...
Innerhalb von main und tools sowie in jedem anderen Verzeichnis auf jeder Ebene kann es ein 'bin'-Verzeichnis geben, das ich ignorieren möchte (und ich möchte auch alles darunter ignorieren). Ich habe jedes dieser Muster in .gitignore ausprobiert, aber keines davon funktioniert:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
Kann mir jemand helfen? Das erste Muster (das, von dem ich denke, dass es funktionieren sollte) funktioniert einwandfrei, wenn ich das mache:
/main/**/bin/**/*
Ich möchte jedoch nicht für jedes Verzeichnis der obersten Ebene einen Eintrag haben, und ich möchte nicht jedes Mal, wenn ich einen neuen hinzufüge, .gitignore ändern müssen.
Dies ist unter Windows mit dem neuesten msysgit.
EDIT: eine weitere Sache, es gibt Dateien und Verzeichnisse, deren Namen den Teilstring 'bin' enthalten, ich möchte nicht, dass diese ignoriert werden :)
**
Syntax scheint jetzt (März 2013, Git 1.8.2) offiziell dokumentiert zu sein: siehe meine Antwort untenAntworten:
Vor Version 1.8.2
**
hatte keine besondere Bedeutung in der.gitignore
. Ab 1.8.2 git Träger**
auf mittlere null oder mehr Unterverzeichnisse (siehe Release Notes ).Die Möglichkeit, alle Verzeichnisse mit dem Namen bin irgendwo unterhalb der aktuellen Ebene in einem Verzeichnisbaum zu ignorieren, besteht in einer
.gitignore
Datei mit dem folgenden Muster:Auf der
man
Seite finden Sie ein Beispiel für das Ignorieren eines Verzeichnisses, dasfoo
mit einem analogen Muster aufgerufen wurde .Bearbeiten: Wenn Ihr Git-Index bereits Bin-Ordner enthält, die Sie nicht mehr verfolgen möchten, müssen Sie diese explizit entfernen. Git hört nicht auf, Pfade zu verfolgen, die bereits verfolgt werden, nur weil sie jetzt einem neuen
.gitignore
Muster entsprechen. Führen Sie einen Ordner entfernen ( rm ) nur aus dem Index entfernen ( --cached ) rekursiv ( -r ). Befehlszeilenbeispiel für den Ordner "root bin":quelle
**
in.gitignore
Dateien (Quelle: 1.8.2 Changelog )bin
das gleiche vonbin/
?bin
ignoriert Dateien mit dem Namen bin, währendbin/
für Verzeichnisse mit dem Namen binDas
.gitignore
von deinem Traum scheint zu sein:auf der obersten Ebene.
quelle
Ich denke, es ist erwähnenswert für Git-Anfänger:
Wenn Sie also hinzufügen möchten, dass einige Verzeichnisse in Ihrem lokalen Repository (die bereits vorhanden sind) nach dem Bearbeiten von .gitignore ignoriert werden, möchten Sie dies in Ihrem Stammverzeichnis ausführen
Grundsätzlich wird Ihr lokales Repo "aktualisiert" und ignorierte Dateien werden entfernt.
Sehen:
http://git-scm.com/docs/git-rm ,
https://help.github.com/articles/ignoring-files/
quelle
git add -A
Kann ich dies stattdessen verwenden, wenn ich normalerweise ein Commit für meine Commits durchführe? und kann ich den Punkt auch in der ersten Zeile durch -A ersetzen?Das hat noch
**
nie richtig funktioniert, aber seit Git 1.8.2 (8. März 2013) scheint es ausdrücklich erwähnt und unterstützt zu werden:In Ihrem Fall bedeutet dies, dass diese Zeile jetzt möglicherweise unterstützt wird:
quelle
entspricht sowohl Groß- als auch Kleinbuchstaben
quelle
[B]in/
der einzige Großbuchstabe seinBin
Ordner ignorieren lassen undbin
Commit für Git festlegen?[B]in/
wird sowohl begehenBin
als auchbin
.Bin/
!bin/
Ich habe es hier nicht erwähnt gesehen, aber dies scheint zwischen Groß- und Kleinschreibung zu unterscheiden. Nachdem ich zu / Bin gewechselt hatte, wurden die Dateien wie erwartet ignoriert.
quelle
bin
, nichtBin
.[Bb]in
wird das Problem lösen, aber ... Hier eine ausführlichere Liste von Dingen, die Sie ignorieren sollten (Beispielliste von GitExtension):quelle
Wenn Sie nach einer großartigen globalen
.gitignore
Datei für eine Visual Studio (.NET) -Lösung suchen, empfehlen wir Ihnen, diese zu verwenden: https://github.com/github/gitignore/blob/master/VisualStudio.gitignoreAFAIK hat es am umfassendsten
.gitignore
für .NET-Projekte.quelle
Schritt 1: Fügen Sie der Datei .gitignore folgenden Inhalt hinzu.
Schritt 2: Stellen Sie sicher, dass Sie wirksam werden
Wenn das Problem weiterhin besteht, können Einstellungen in .gitignore nur Dateien ignorieren, die ursprünglich nicht verfolgt wurden . Wenn einige Dateien bereits im Versionskontrollsystem enthalten sind, ist das Ändern von .gitignore ungültig. Um dieses Problem vollständig zu lösen, müssen Sie Git Bash oder Package Manager Console öffnen (siehe Abbildung unten), um die folgenden Befehle im Repository-Stammordner auszuführen.
Dann ist das Problem vollständig gelöst.
quelle
Buchstäblich keine der Antworten hat tatsächlich für mich funktioniert; Das einzige, was für mich funktioniert hat, war (unter Linux):
quelle
bin
in den Unterverzeichnissen genannten Ordner ignoriert ?Als Hinweis;
Wenn Sie darüber nachdenken, dass
.gitignore
dies nicht in irgendeiner Weise funktioniert (alsofoo/*
Ordner hinzugefügt , abergit status
immer noch die Ordnerinhalte als geändert oder ähnlich angezeigt werden), können Sie diesen Befehl verwenden.git checkout -- foo/*
quelle
Ab 2.13.3 sollte das Schreiben von nur bin in Ihre .gitignore-Datei den bin und alle seine Unterverzeichnisse und Dateien ignorieren
quelle
Das Hinzufügen von ** / bin / zur .gitignore-Datei hat den Trick für mich getan (Hinweis: bin-Ordner wurde nicht zum Index hinzugefügt).
quelle
Wenn das Muster im Inneren
.gitignore
mit einem Schrägstrich endet/
, wird nur eine Übereinstimmung mit einem Verzeichnis gefunden.Mit anderen Worten,
bin/
stimmt mit einem Verzeichnisbin
und Pfaden darunter überein, stimmt jedoch nicht mit einer regulären Datei oder einem symbolischen Link übereinbin
.Wenn das Muster keinen Schrägstrich enthält , wie in
bin
Git, wird es als Shell-Glob-Muster (gierig) behandelt. Am besten wäre es also, einfach zu verwenden/bin
.bin
wäre nicht die beste Lösung für dieses spezielle Problem.quelle
/
?In meinem Fall war die Codierung der Gitignore-Datei problematisch. Überprüfen Sie, ob es sich um UTF-8 handelt
quelle