Was genau ist .gitignore?

212

Ich habe gerade ein Github-Repository erstellt und mich gefragt, wozu die .gitignoreDatei dient. Ich habe zunächst keine erstellt, sondern eine hinzugefügt, da die meisten Repositorys eine haben. Muss ich einen haben? Kann / kann ich es einfach ignorieren oder hat es eine Verwendung? Ich habe zu diesem Thema recherchiert, konnte aber keine konkrete Erklärung finden.

Zahachos
quelle

Antworten:

175

.gitignoreteilt git mit, welche Dateien (oder Muster) ignoriert werden sollen. Es wird normalerweise verwendet, um zu vermeiden, dass vorübergehende Dateien aus Ihrem Arbeitsverzeichnis festgeschrieben werden, die für andere Mitarbeiter nicht nützlich sind, z. B. Kompilierungsprodukte, von IDEs erstellte temporäre Dateien usw.

Die vollständigen Details finden Sie hier .

Mureinik
quelle
Wenn Sie also einen Gitignore in einem neuen Repository auf github.com erstellen und dann einen Git-Init und einen Git-Add ausführen . auf Ihrem lokalen Computer - noch nicht mit .gitignore verbunden, da es noch nicht mit diesem Repository verbunden ist - wie funktioniert das? Wird es wirksam, wenn ich ein Git-Commit durchführe? Oder?
Xonatron
Wofür wird _._gitignoreverwendet? wird es nur verwendet, wenn sich das gitignore in einer Unterrichtung befindet?
Saikat Chakrabortty
Es bleibt also lokal, wird aber nicht zum Ursprung gedrängt? Wenn also ein Benutzer Github Repo herunterlädt, wird diese geheime Datei dann auch heruntergeladen?
Treffen Sie Zaveri
Was bedeutet ignorieren ? Wer / was / wann ignoriert das? Ich weiß, was das Wort Ignorieren bedeutet, aber ich finde keine klare Beschreibung dessen, was Ignorieren im Kontext von Git bedeutet. Offensichtlich ist der Begriff für Menschen, die ihn verstehen, völlig verständlich, aber alles, was geschrieben wurde, um etwas für Menschen zu definieren, die es noch nicht wissen, muss alle Begriffe erklären, deren Definitionen für den Kontext eindeutig sind.
user34660
1
@ user34660 Ignorieren bedeutet nur, dass - Git keine Änderungen in den durch (die Muster) in der .gitignoreDatei angegebenen Dateien verfolgt . Selbst wenn Sie sie ändern, zeigt git sie nicht als geändert an.
Mureinik
42

Es ist eine Liste von Dateien, die Git in Ihrem Arbeitsverzeichnis ignorieren soll.

Angenommen, Sie arbeiten auf einem Mac und haben .DS_Store-Dateien in all Ihren Verzeichnissen. Sie möchten, dass git sie ignoriert, also fügen Sie .DS_Store als Zeile in .gitignore hinzu. Und so weiter.

In den Git-Dokumenten finden Sie alles, was Sie wissen müssen: http://git-scm.com/docs/gitignore

Andy Lester
quelle
2
Ihr .DS_StoreSzenario fand schließlich Resonanz bei mir, da ich mich wohl nicht an dieses Konzept gewöhnt habe, weil ich es noch nicht in einem Projekt verwenden musste. Danke dir. Am Ende habe ich dies als Ausgangspunkt verwendet, da ich alle verschiedenen Betriebssysteme verwende, die speziell den # OS generated files #Abschnitt beachten .
Phoenixix
2
Ich weiß, dass ich zu spät zu diesem Thread komme, aber danke @AndyLester! Ich bin ein Anfänger, wenn es um Programmierung und Github geht. Ich finde, dass viele der Antworten, die geschrieben wurden, um diese Art von Frage zu beantworten, mit Begriffen gefüllt sind, die der Anfänger möglicherweise nicht versteht (dh Kompilierungsprodukte, temporäre Dateien, die IDEs erstellen ... was zum Teufel sind diese Dinge!). Ihre Mac-Beschreibung ist jedoch in ihrer eleganten Einfachheit perfekt!
Vesuccio
21

Wenn Sie ein Commit ausführen, möchten Sie nicht versehentlich temporäre Dateien einschließen oder bestimmte Ordner erstellen. Verwenden .gitignoreSie daher eine Auflistung der Elemente, die Sie beim Festschreiben ignorieren möchten.

Wichtig git status ist auch einer der am häufigsten verwendeten Befehle, mit denen Sie die git statusgeänderten Dateien auflisten möchten .

Sie möchten, dass Ihre git statusListe frei von unerwünschten Dateien aussieht . Zum Beispiel habe ich geändert, a.cpp, b.cpp, c.cpp, d.cpp & e.cppdass ich git statusFolgendes auflisten möchte :

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp

Ich möchtegit status geänderte Dateien wie diese nicht mit den Zwischenobjektdateien und -dateien aus dem Build-Ordner auflisten

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp
.DS_Store
/build/program.o
/build/program.cmake

Um mich davon zu befreien git status, diese temporären Zwischendateien aufzulisten und sie versehentlich in das Repo zu übernehmen, sollte ich eine erstellen, .gitignoredie jeder tut. Alles, was ich tun muss, sind die Dateien und Ordner in der Liste aufzulisten, die .gitignoreich vom Festschreiben ausschließen möchte.

Das Folgende ist meine .gitignore, um unnötige Dateien zu vermeiden

/*.cmake
/*.DS_Store
/.user
/build
Programmierer_der_Galaxien
quelle
7

Es gibt Dateien, in die Git nicht einchecken soll. Git sieht jede Datei in Ihrer Arbeitskopie als eines von drei Dingen:

  1. verfolgt - eine Datei, die zuvor bereitgestellt oder festgeschrieben wurde;
  2. untracked - eine Datei, die nicht bereitgestellt oder festgeschrieben wurde; oder
  3. ignoriert - eine Datei, die Git ausdrücklich ignorieren soll.

Ignorierte Dateien sind normalerweise erstellte Artefakte und maschinengenerierte Dateien, die von Ihrer Repository-Quelle abgeleitet werden können oder auf andere Weise nicht festgeschrieben werden sollten. Einige gängige Beispiele sind:

  • Abhängigkeits-Caches, wie z. B. der Inhalt von /node_modulesoder/packages
  • kompilierten Code, wie .o, .pycund .classDateien
  • Build - Ausgabeverzeichnisse, wie /bin, /outoder/target
  • Dateien zur Laufzeit erzeugt, wie .log, .lockoder.tmp
  • versteckte Systemdateien wie .DS_StoreoderThumbs.db
  • persönliche IDE-Konfigurationsdateien, wie z .idea/workspace.xml

Ignorierte Dateien werden in einer speziellen Datei mit dem Namen verfolgt .gitignore, die im Stammverzeichnis Ihres Repositorys eingecheckt ist. Es gibt keinen expliziten Befehl zum Ignorieren von Git: Stattdessen .gitignoremuss die Datei von Hand bearbeitet und festgeschrieben werden, wenn Sie neue Dateien haben, die Sie ignorieren möchten. .gitignoreDateien enthalten Muster, die mit Dateinamen in Ihrem Repository abgeglichen werden, um zu bestimmen, ob sie ignoriert werden sollen oder nicht. Hier ist eine Beispieldatei.gitignore . Weitere Details finden Sie unter diesem Link

imk
quelle
5

Hauptzweck von .gitignore - so vermeiden Sie das Hinzufügen irrelevanter Dateien usw. Git

Ich habe viele persönliche Notizen / Kritzeleien in bestimmten Repositories: Sie sind für mich nützlich, aber für niemanden anderen. Ich würde nicht wollen, dass es auf Github hochgeladen wird, weil es einfach jeden verwirren würde, der es liest. Das Gute ist, dass ich git bitten kann, diese Dateien zu "ignorieren". Die einzigen Kosten für diesen Ansatz sind, dass ich diese Notizen nicht wiederherstellen kann, wenn mein Computer abstürzt usw.

BKSpurgeon
quelle