Frage Ignorieren eines bin-Verzeichnisses in einem git-Projekt


Ich habe eine Verzeichnisstruktur wie folgt:

.git/
.gitignore
main/
  ...
tools/
  ...
...

Innerhalb von main und tools und jedem anderen Verzeichnis auf jeder Ebene kann ein 'bin' Verzeichnis sein, das ich ignorieren möchte (und ich möchte auch alles darunter ignorieren). Ich habe jedes dieser Muster in .gitignore versucht, aber keiner von ihnen 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 ich denke, sollte funktionieren) funktioniert gut, wenn ich das tue:

/main/**/bin/**/*

Aber ich möchte keinen Eintrag für jedes Verzeichnis der obersten Ebene haben und ich möchte nicht jedes Mal, wenn ich ein neues hinzufüge, .gitignore modifizieren müssen.

Dies ist unter Windows mit dem neuesten msysgit.

BEARBEITEN: eine weitere Sache, es gibt Dateien und Verzeichnisse, die den Teilstring 'bin' in ihren Namen haben, ich will nicht, dass diese ignoriert werden :)


977
2017-09-24 09:13


Ursprung


Antworten:


Vor der Version 1.8.2 ** hatte keine besondere Bedeutung in der .gitignore. Ab 1.8.2 Git unterstützt ** um null oder mehr Unterverzeichnisse zu bedeuten (siehe Versionshinweise).

Die Möglichkeit, alle Verzeichnisse zu ignorieren, die unterhalb der aktuellen Ebene in einer Verzeichnisbaumstruktur bin genannt werden, ist mit a .gitignore Datei mit dem Muster:

bin/

In dem man Seite, dort ein Beispiel für das Ignorieren eines Verzeichnisses namens foo Verwenden eines analogen Musters.

Bearbeiten:  Wenn Sie bereits bin-Ordner in Ihrem Git-Index haben, die Sie nicht länger verfolgen möchten, müssen Sie sie explizit entfernen. Git hört nicht auf, Pfade zu verfolgen, die bereits verfolgt werden, nur weil sie jetzt mit einem neuen übereinstimmen .gitignore Muster. Führe einen Ordner aus (rm) nur aus dem Index (--cachiert) rekursiv (-r). Befehlszeilenbeispiel für den Ordner "root bin":

git rm -r --cached bin

1472
2017-09-24 09:35



Das .gitignore Dein Traum scheint zu sein:

bin/

auf der obersten Ebene.


399
2017-09-24 09:16



Ich denke, es ist erwähnenswert für Git-Anfänger:

Wenn Sie bereits eine Datei eingecheckt haben und diese ignorieren möchten, Git   Die Datei wird nicht ignoriert, wenn Sie später eine Regel hinzufügen. In diesen Fällen, Sie   muss die Datei zuerst entpacken, indem Sie den folgenden Befehl in Ihrem ausführen   Terminal:

git rm --cached

Wenn Sie also nach dem Bearbeiten von .gitignore einige Verzeichnisse in Ihrem lokalen Repository (die bereits existieren) ignorieren möchten, möchten Sie dies in Ihrem Root-Verzeichnis ausführen

git rm --cached -r .
git add .

Es wird im Grunde Ihre lokalen Repos aktualisieren und ignorierte Dateien nicht anzeigen.

Sehen:

http://git-scm.com/docs/git-rm,

https://help.github.com/articles/ignoring-files/


176
2018-05-13 08:54



Das ** noch nie richtig gearbeitet, aber seit Git 1.8.2 (8. März 2013)scheint es ausdrücklich erwähnt und unterstützt zu werden:

Die Muster in .gitignore und .gitattributes Dateien kann haben **/, als ein Muster, das 0 oder mehr Ebenen des Unterverzeichnisses entspricht.

Z.B. "foo/**/bar" Streichhölzer "bar" im "foo"sich selbst oder in einem Unterverzeichnis von"foo".

In Ihrem Fall bedeutet das, dass diese Zeile jetzt unterstützt wird:

/main/**/bin/

68
2018-04-23 09:20



[Bb]in/

entspricht Groß- und Kleinschreibung


43
2017-08-30 05:32



Ich habe es hier nicht erwähnt, aber dies scheint die Groß- / Kleinschreibung zu beachten. Sobald ich in / Bin geändert habe, wurden die Dateien wie erwartet ignoriert.


30
2017-10-08 22:00



[Bb]inwird das Problem lösen, aber ... Hier eine umfangreichere Liste von Dingen, die Sie ignorieren sollten (Beispielliste von GitExtension):

#ignore thumbnails created by windows
Thumbs.db
#Ignore files build by Visual Studio
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.bak
*.cache
*.ilk
*.log
[Bb]in
[Dd]ebug*/
*.sbr
obj/
[Rr]elease*/
_ReSharper*/

23
2018-01-03 00:23



Wenn Sie nach einem großartigen globalen suchen .gitignore Datei für jede Visual Studio (.NET) -Lösung - Ich empfehle Ihnen, diese zu verwenden: https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

AFAIK hat es am umfassendsten .gitignore für .NET-Projekte.


16
2017-07-30 14:33



Als eine Benachrichtigung;

Wenn du darüber nachdenkst .gitignore funktioniert nicht so (also hinzugefügt foo/* Ordner drin aber git status zeigt immer noch, dass Ordnerinhalt (e) wie geändert oder so ähnlich ist), dann können Sie diesen Befehl verwenden;

git checkout -- foo/*


5
2018-02-17 09:33



Ab 2.13.3 sollte das Schreiben von "bin" in Ihre .gitignore-Datei die Klasse und alle Unterverzeichnisse und Dateien ignorieren

Behälter


3
2017-08-03 16:41



Schritt 1: Fügen Sie folgenden Inhalt zur Datei .gitignore hinzu.

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/

# Visual Studio 2015 cache/options directory
.vs/

Schritt 2: Stellen Sie sicher, dass es wirksam wird

Wenn das Problem weiterhin besteht, liegt das an den Einstellungen in .gitignore kann nur Dateien ignorieren, die ursprünglich vorhanden waren nicht verfolgt. Wenn einige Dateien bereits in das Versionskontrollsystem aufgenommen wurden, ändern Sie sie .gitignore ist ungültig. Um dieses Problem vollständig zu lösen, müssen Sie öffnen Git Bash oder Paket-Manager-Konsole (siehe Screenshot unten), um die folgenden Befehle im Repository-Stammordner auszuführen.

$ git rm -r --cached .
$ git add .
$ git commit -m 'Update .gitignore'

PM console Dann wird das Problem vollständig gelöst sein.


3
2018-06-03 06:46