it-swarm.com.de

Wie kann ich verhindern, dass .gitignore in der Liste der nicht überwachten Dateien angezeigt wird?

Ich habe gerade einen git init im Stammverzeichnis meines neuen Projekts erstellt.

Dann habe ich eine .gitignore Datei erstellt.

Wenn ich jetzt git status eingebe, wird .gitignore file in der Liste der nicht verfolgten Dateien angezeigt. Warum ist das so?

953

Die .gitignore -Datei sollte sich in Ihrem Repository befinden, daher sollte sie tatsächlich hinzugefügt und festgeschrieben werden, wie es git status vorschlägt. Es muss Teil des Repository-Baums sein, damit Änderungen daran zusammengeführt werden können und so weiter.

Fügen Sie es also zu Ihrem Repository hinzu, es sollte nicht gitignored werden.

Wenn Sie wirklich möchten, können Sie .gitignore zur Datei .gitignore hinzufügen, wenn Sie nicht möchten, dass sie festgeschrieben wird. In diesem Fall ist es jedoch wahrscheinlich besser, die Ignorierungen zu .git/info/exclude hinzuzufügen, einer speziellen checkout-local-Datei, die genau wie .gitignore funktioniert, jedoch nicht im "git status" angezeigt wird, da sie sich im .git befindet. Mappe.

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

931
August Lilleaas

Wenn Sie die Liste der ignorierten Dateien außerhalb Ihres Git-Baums speichern möchten, können Sie die Datei .git/info/exclude verwenden. Es wird nur auf Ihre Kasse des Repos angewendet.

278
Paweł Hajdan

Sie könnten tatsächlich eine Zeile ".gitignore" in Ihre ".gitignore" -Datei einfügen. Dies würde dazu führen, dass die Datei ".gitignore" von git ignoriert wird. Ich halte das eigentlich nicht für eine gute Idee. Ich denke, die Ignorierdatei sollte versionskontrolliert und nachverfolgt werden. Der Vollständigkeit halber stelle ich das hier nur vor.

74

Sie können auch eine globale Benutzer-git .gitignore -Datei haben, die automatisch auf alle Ihre Repos angewendet wird. Dies ist nützlich für IDE- und Editor-Dateien (z. B. swp- und *~-Dateien für Vim). Ändern Sie die Verzeichnispositionen entsprechend Ihrem Betriebssystem

  1. Fügen Sie Ihrer ~/.gitconfig -Datei hinzu

    [core]
    excludesfile = /home/username/.gitignore
    
  2. Erstellen Sie eine ~/.gitignore -Datei mit zu ignorierenden Dateimustern

  3. Speichern Sie Ihre Punktedateien in einem anderen Repo, damit Sie ein Backup haben (optional).

Jedes Mal, wenn Sie ein Repo kopieren, initialisieren oder klonen, wird auch Ihre globale Gitignore-Datei verwendet.

51
Alec the Geek

Wenn jemand Ihrem Repo bereits einen .gitignore hinzugefügt hat, Sie jedoch einige Änderungen daran vornehmen möchten und diese Änderungen ignorieren möchten, gehen Sie wie folgt vor:

git update-index --assume-unchanged .gitignore

Quelle .

42
Leif Gruenwoldt

Nachdem Sie die .gitignore -Datei hinzugefügt und festgeschrieben haben, wird sie nicht mehr in der Liste "Nicht protokollierte Dateien" angezeigt.

git add .gitignore
git commit -m "add .gitignore file"
git status
37
Greg Hewgill

Nur für den Fall, dass jemand anderes die gleichen Schmerzen hat, die wir hatten. Wir wollten eine bereits festgeschriebene Datei ausschließen.

Dieser Beitrag war viel nützlicher: mit .git/info/exclude zu spät arbeiten

Insbesondere müssen Sie zum Ignorieren einer Datei den Befehl git remove verwenden. Siehe git rm ( http://www.kernel.org) /pub/software/scm/git/docs/git-rm.html )

sie testen es, indem Sie gehen

git rm --dry-run *.log
(wenn Sie sagen, dass Sie alle Protokolldateien ausschließen möchten)

dies gibt aus, was wäre ausgeschlossen, wenn Sie es ausgeführt haben.

dann

du machst es, indem du gehst

git rm *.log
(oder welcher Dateinamenpfad/Ausdruck auch immer Sie möchten)

Fügen Sie dann eine Zeile _*.log_ zu Ihrer Datei _.gitignore_ hinzu.

20
Evolve

Natürlich zeigt die .gitignore-Datei den Status an, da sie nicht verfolgt wird und git sie als leckere neue Datei ansieht, die es zu essen gilt!

Da .gitignore jedoch keine nachverfolgte Datei ist, ist es ein Kandidat, der von git ignoriert wird, wenn Sie es in .gitignore einfügen!

Die Antwort ist also einfach: Fügen Sie einfach die folgende Zeile hinzu:

.gitignore # Ignore the hand that feeds!

in deine .gitignore Datei!

Und im Gegensatz zu Augusts Antwort sollte ich sagen, dass sich die .gitignore-Datei nicht in Ihrem Repository befinden sollte . Es kommt einfach vor, dass es sein kann , was oft praktisch ist. Und es ist wahrscheinlich wahr, dass .gitignore aus diesem Grund als Alternative zu .git/info/exclude erstellt wurde, bei dem das Repository keine Option zur Verfolgung bietet. In jedem Fall liegt es ganz bei Ihnen, wie Sie Ihre .gitignore-Datei verwenden.

Informationen hierzu finden Sie auf der Hilfeseite gitignore (5) auf kernel.org.

15
chase

Die Idee ist, projektspezifische Dateien in die Datei .gitignore einzufügen und (wie bereits erwähnt) dem Repository hinzuzufügen. Zum Beispiel .pyc und .o Dateien, Protokolle, die die Testsuite erstellt, einige Fixtures usw.

Für Dateien, die Ihr eigenes Setup erstellt, die jedoch nicht unbedingt für jeden Benutzer angezeigt werden (z. B. .swp -Dateien, wenn Sie vim, versteckte ecplise-Verzeichnisse und dergleichen verwenden), sollten Sie .git/info/exclude (wie bereits erwähnt) verwenden. .

15
bayer

Erstens, wie viele andere bereits sagten, sollte Ihr .gitignore von Git verfolgt werden (und sollte daher nicht ignoriert werden). Lass mich erklären warum.

(TL; DR: Übertragen Sie die .gitignore-Datei und verwenden Sie einen globalen .gitignore , um Dateien zu ignorieren, die von Ihrem IDE oder Betriebssystem erstellt wurden.)

Git ist, wie Sie wahrscheinlich bereits wissen, ein verteiltes Versionskontrollsystem . Dies bedeutet, dass Sie zwischen verschiedenen Versionen hin- und herschalten können (auch wenn die Entwicklung in verschiedene Zweige abweicht) und mehrere Entwickler an demselben Projekt arbeiten können.

Das Verfolgen Ihres .gitignore hat zwar auch Vorteile beim Wechseln zwischen Schnappschüssen, der wichtigste Grund für das Festlegen ist jedoch, dass Sie die Datei für andere Entwickler freigeben möchten, die an demselben Projekt arbeiten. Durch das Festschreiben der Datei in Git erhalten andere Mitwirkende automatisch die Datei .gitignore, wenn sie das Repository klonen, sodass sie sich keine Sorgen machen müssen, dass versehentlich eine Datei festgeschrieben wird, die nicht festgeschrieben werden sollte (z. B. Protokolldateien, Cache-Verzeichnisse, Datenbankanmeldeinformationen usw.). Und wenn irgendwann der .gitignore des Projekts aktualisiert wird, können sie diese Änderungen einfach übernehmen, anstatt die Datei manuell bearbeiten zu müssen.

Natürlich gibt es einige Dateien und Ordner, die Sie ignorieren möchten. Diese sind jedoch spezifisch für Sie und gelten nicht für andere Entwickler. Diese sollten jedoch nicht im .gitignore des Projekts enthalten sein. Es gibt zwei weitere Stellen, an denen Sie Dateien und Ordner ignorieren können:

  • Dateien und Ordner, die von Ihrem Betriebssystem oder IDE erstellt wurden, sollten in einem globalen .gitignore abgelegt werden. Der Vorteil ist, dass dieser .gitignore auf alle Repositorys auf Ihrem Computer angewendet wird, sodass Sie dies nicht für jedes Repository wiederholen müssen. Es wird nicht mit anderen Entwicklern geteilt, da diese möglicherweise ein anderes Betriebssystem und/oder eine andere IDE verwenden.
  • Dateien, die weder zum .gitignore des Projekts noch zum globalen .gitignore gehören, können mit explizites Repository schließt in your_project_directory/.git/info/exclude ignoriert werden. Diese Datei wird nicht für andere Entwickler freigegeben und ist für dieses einzelne Repository spezifisch
14
Nic Wortel

Achten Sie auf das folgende "Problem" Manchmal möchten Sie Verzeichnisse hinzufügen, aber keine Dateien in diesen Verzeichnissen. Die einfache Lösung besteht darin, einen .gitignore mit dem folgenden Inhalt zu erstellen:

*

Dies funktioniert einwandfrei, bis Sie feststellen, dass das Verzeichnis nicht hinzugefügt wurde (wie in Ihrem Repository erwartet). Der Grund dafür ist, dass der .gitignore ebenfalls ignoriert wird und das Verzeichnis daher leer ist. Daher sollten Sie so etwas tun :

*
!.gitignore
11
Maze

Dies scheint nur für Ihr aktuelles Verzeichnis zu funktionieren, damit Git alle Dateien aus dem Repository ignoriert.

aktualisieren Sie diese Datei

.git/info/exclude 

mit Ihrem Platzhalter oder Dateinamen

*pyc
*swp
*~
8
Paul Tyrrell

In meinem Fall möchte ich eine vorhandene Datei ausschließen. Nur das Ändern von . Gitignore funktioniert nicht. Ich bin diesen Schritten gefolgt:

git rm --cached dirToFile/file.php
vim .gitignore
git commit -a

Auf diese Weise habe ich die Datei, die ich ausschließen wollte, aus dem Cache entfernt und nach dem Hinzufügen zu .gitignore.

4

Wenn Sie .gitignore bereits eingecheckt haben und Änderungen daran ignorieren möchten, lesen Sie diese Antwort :

Versuchen Sie es mit diesem Befehl:

git update-index --assume-unchanged FILENAME_TO_IGNORE

Um es rückgängig zu machen (falls Sie jemals Änderungen daran vornehmen möchten), verwenden Sie:

git update-index --no-assume-unchanged

UPDATE:

So listen Sie "unveränderte" Dateien im aktuellen Verzeichnis auf:

git ls-files -v | grep -E "^[a-z]"

Da die Option -v Kleinbuchstaben für "unveränderte" Dateien verwendet.

4
Aaron

Navigieren Sie zum Basisverzeichnis Ihres Git-Repos und führen Sie den folgenden Befehl aus:

echo '\\.*' >> .gitignore

Alle Punktedateien werden ignoriert, auch der lästige .DS_Store, wenn Sie einen Mac verwenden.

3
weffen

Es ist durchaus möglich, dass ein Endbenutzer möchte, dass Git die ".gitignore" -Datei einfach ignoriert, weil die von Eclipse erstellten IDE -spezifischen Ordner wahrscheinlich nicht mit NetBeans oder einer anderen IDE identisch sind. Um den Quellcode IDE antagonistisch zu halten, ist es einfach, einen benutzerdefinierten Git zu ignorieren, der nicht für das gesamte Team freigegeben wird, da einzelne Entwickler möglicherweise unterschiedliche IDEs verwenden.

2
John Brown

Ich denke, dass es Situationen gibt, in denen das Ignorieren des .gitignore sehr nützlich ist. Zum Beispiel, wenn Sie mehrere Teams oder ein großes Team haben, das an derselben Codebasis arbeitet. In diesem Fall müssen Sie bestimmte Konventionen haben. Eine dieser Konventionen betrifft das, was beim Git Repo ignoriert wird. In der Regel werden Dateien und Verzeichnisse ignoriert, die von IDE oder dem Betriebssystem erstellt wurden, einige generierte Protokolle usw.

Es gibt jedoch eine Kraft, die dazu neigt, nicht-konventionelle Änderungen an der .gitignore -Datei vorzunehmen. Die .gitignore -Datei kann weiterhin von einer verantwortungslosen Person, versehentlich von einem verwendeten Werkzeug oder in einem anderen Fall geändert werden.

Um dem entgegenzuwirken, können wir wie folgt vorgehen:

  1. Der anfängliche .gitignore sollte die Konvention in Team (s) widerspiegeln,
  2. Nach dem Pushen sollte der .gitignore durch Hinzufügen des .gitignore-Eintrags und erneutes Pushen dieser Änderung gesichert werden. Die .gitignore -Datei lautet auf diese Weise "seal".

Die Datei "seal" .gitignore kann nur lokal geändert werden, ohne dass die Änderungen an andere Mitglieder des Teams weitergegeben werden. Wenn jedoch eine Änderung im gesamten Team weitestgehend vereinbart ist, ist es möglich, sie zu "entsiegeln", zu ändern und dann erneut zu "versiegeln". Das kann nicht versehentlich gemacht werden, nur absichtlich.

Leider können Sie nicht zu 100% vor der Dummheit geschützt sein, aber auf diese Weise haben Sie alles getan, um zu verhindern, dass dumme Dinge passieren.

Wenn Sie ein relativ kleines Team mit sehr guten Fachleuten haben, wäre dies nicht wichtig, aber selbst diese Leute würden es begrüßen, wenn sie sich um eine Sache weniger Sorgen machen müssten.

Die Verwendung von .git/info/exclude ist cool, wenn Sie nichts an den Infrastruktureinstellungen ändern können, sondern nur Ihr eigenes ** vertuschen, um keinen Fehler zu machen.

Was richtig und was falsch ist, stimme ich für einen .gitignore-Eintrag in der .gitignore -Datei, damit jeder die Freiheit hat, lokal zu tun, was er will, aber nicht in andere einzudringen.

1
Sasa

Bei .gitignore werden andere Dateien ignoriert. Bei git geht es um Dateien, also geht es darum, Dateien zu ignorieren. Da git jedoch Dateien abarbeitet, muss diese Datei als Mechanismus zum Auflisten der anderen Dateinamen vorhanden sein.

Wenn es .the_list_of_ignored_files genannt würde, wäre es vielleicht etwas offensichtlicher.

Eine Analogie ist eine Liste von Aufgaben, die Sie NICHT ausführen möchten. Wenn Sie sie nicht irgendwo auflisten, wissen Sie nichts über sie.

1
Michael Durrant

Ich fand heraus, dass der beste Ort, um die lästigen .DS_Store -Dateien zu ignorieren, in der .git/info/exclude -Datei liegt.

IntelliJ scheint dies automatisch zu tun, wenn Sie ein Git-Repository darin einrichten.

0