.gitignore NuGet schließt Pakete aus / include packages / repositories.config

89

Ich versuche, einen Gitignore für ein Visual Studio-Projekt zu erstellen, das NuGet verwendet. Es enthält derzeit:

\packages/*
!packages/repositories.config

Dies ignoriert nichts im Ordner. Alles wird auf einem Add inszeniert. Ich habe auch versucht:

packages/
!packages/repositories.config

Dies ignoriert alles im Paketordner und enthält nicht die Datei packages / repositories.config.

Was mache ich falsch?

Dipesh
quelle

Antworten:

114
/packages/
!packages/repositories.config

Sie können auch eine .gitignoreim Paketordner hinzufügen :

*
!repositories.config
!.gitignore
Manojlds
quelle
12
Es wäre eine Schande, wenn sich das .gitignoreselbst ignorieren würde. +1
Thomas
2
Der erste Block funktioniert bei mir nicht (Git-Version 1.8.4.msysgit.0). Ich denke, die erste Zeile sollte nur packagesohne Stern sein.
Grant Birchmeier
1
Ich habe festgestellt, dass Visual Studio den Paketordner weiterhin anzeigt. Ich musste ms-persist.xmlaus dem .gitOrdner entfernen, damit die .gitignoreDatei respektiert werden konnte. Weitere Informationen hierzu finden Sie unter ericnelson.wordpress.com/2014/06/21/… .
Rudivonstaden
Ich weiß nicht, welche Version Sie anprobiert haben, hat aber /packages/bei mir nicht funktioniert. Stattdessen fand ich diese Antwort sehr hilfreich. Kurz gesagt, packages/*der Trick. Git Version 2.6.1
Stelios Adamantidis
36

Ich stand vor dem gleichen Problem.

Keine der oben genannten Lösungen hat bei mir funktioniert. Und ich denke, es ist eine schlechte Lösung, mehrere .ignore-Dateien zu verwalten.

So habe ich es gelöst.

**/packages/*
!**/packages/repositories.config

Das Kombinieren von zwei Sternchen entspricht einer beliebigen Ordnerfolge. Ich dachte, das Weglassen von Sternchen hätte den gleichen Effekt, aber anscheinend habe ich (wir) mich geirrt, da es nicht zu funktionieren scheint.

Die offizielle .gitignore-Vorlage für Visual Studio empfiehlt die folgenden Lösungen:

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config

BEARBEITEN: Sie können https://www.gitignore.io verwenden , um eine .ignore-Datei für Ihr Lieblingsprojekt zu generieren :-)

Ali Reza Dehdar
quelle
2
Dies ist die einzige Variante, die für mich funktioniert hat, da ich mehrere Projekte im Repository mit jeweils einem Paketordner hatte. Vielen Dank.
Michael Logutov
1
Die empfohlene offizielle Vorlage für Visual Studio + kommentiert die letzte Zeile.
Vezenkov
1
Das ist eigentlich ein bisschen riskant. Jeder Ordner mit dem Namen "Pakete" wird ignoriert, nicht nur der auf Lösungsebene. Ich fand zu spät heraus, dass einige meiner Modellklassen nie Teil des Repositorys waren.
Rich
2
Es wurde jetzt aktualisiert: # NuGet Packages .nupkg # Der Paketordner kann aufgrund der Paketwiederherstellung ** / packages / # mit Ausnahme von build /, das als MSBuild-Ziel verwendet wird, ignoriert werden . ! ** / packages / build / # Kommentar entfernen, falls erforderlich, aber im Allgemeinen wird es bei Bedarf neu generiert #! ** / packages / repositories.config # Die project.json-Dateien von NuGet v3 erzeugen mehr ignorierbare Dateien * .nuget.props * .nuget. Ziele
Daniel Ryan
außer das !**/packages/build/funktioniert bei mir nicht, mit der angegebenen Lösung ... Build-Ordner werden nicht festgeschrieben
JobaDiniz
12

Das funktioniert bei mir.

#NuGet
packages
!packages/repositories.config

(Wie @ manojlds Antwort, außer dass der Stern in der ersten Zeile entfernt wurde. Das hat bei mir nicht funktioniert.)

Grant Birchmeier
quelle
8

Ich fand dieses einfache Muster funktioniert.

/packages/*/

Es sollte alle Verzeichnisse im Verzeichnis der Stammpakete ignorieren, aber alle Dateien dort enthalten. Nicht sicher, welche anderen Dateien als repositories.config dort angezeigt werden oder ob sie in das Repository aufgenommen werden sollen.

Siehe auch .gitignore Syntax: bin vs bin / vs. bin / * vs. bin / **

ygoe
quelle
0

Bei mir hat nur das geklappt:

**/packages/**

Sam
quelle