info Ignorieren Sie die.gitignore-Datei selbst




linux gitignore (16)

Nachdem Sie die .gitignore Datei .gitignore und .gitignore haben, wird sie nicht mehr in der Liste "Nicht verfolgte Dateien" .gitignore .

git add .gitignore
git commit -m "add .gitignore file"
git status

Ich habe gerade einen git init auf die Wurzel meines neuen Projekts gemacht.

Dann habe ich eine .gitignore Datei erstellt.

Wenn ich nun git status eingib , erscheint die Datei .gitignore in der Liste der nicht geordneten Dateien. Warum das?


Natürlich wird die .gitignore-Datei über den Status angezeigt, weil sie nicht verfolgt wird, und git sieht es als eine leckere neue Datei zum Essen!

Da .gitignore eine nicht aufgezeichnete Datei ist, ist es ein Kandidat, der von Git ignoriert wird, wenn Sie ihn in .gitignore einfügen.

Also, die Antwort ist einfach: Einfach die Zeile hinzufügen:

.gitignore # Ignore the hand that feeds!

zu Ihrer .gitignore-Datei!

Und entgegen der Antwort von August sollte ich sagen, dass die .gitigore-Datei nicht in Ihrem Repository sein sollte. Es passiert einfach, dass es sein kann , was oft bequem ist. Und es ist wahrscheinlich wahr, dass dies der Grund ist, dass .gitignore als Alternative zu .git / info / exclude erstellt wurde, die nicht vom Repository verfolgt werden kann. Wie Sie Ihre .gitigore-Datei verwenden, liegt ganz bei Ihnen.

Als Referenz sehen Sie sich die Hilfeseite gitignore (5) auf kernel.org an.


In meinem Fall möchte ich eine bestehende Datei ausschließen. Nur das Ändern von .gitignore funktioniert nicht. Ich folge diesen Schritten:

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

Auf diese Weise säuberte ich die Datei, die ich ausschließen wollte, aus dem Cache und fügte sie zu .gitignore hinzu .


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


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

*

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

*
!.gitignore

Wenn Ihrem .gitignore bereits ein .gitignore hinzugefügt wurde, Sie jedoch einige Änderungen daran vornehmen und diese Änderungen ignorieren möchten, gehen Sie folgendermaßen vor:

git update-index --assume-unchanged .gitignore

Source .


Ich denke, dass es Situationen gibt, in denen es sehr nützlich ist, das .gitignore zu ignorieren. Zum Beispiel, wenn mehrere Teams oder ein großes Team an der gleichen Codebasis arbeitet. In diesem Fall müssen Sie bestimmte Konventionen haben, eine dieser Konventionen bezieht sich darauf, was beim Git Repo ignoriert wird. Es geht normalerweise darum, Dateien und Verzeichnisse zu ignorieren, die von IDE oder OS erstellt wurden, einige generierte Protokolle usw.

Es gibt jedoch eine Kraft, die dazu neigt, nicht-konventionelle Änderungen an der .gitignore Datei .gitignore . Die .gitignore Datei kann durch unverantwortliche Personen versehentlich durch ein Werkzeug, das verwendet wird, oder in einem anderen Fall geändert werden.

Um eine Gegenkraft zu haben, können wir folgendes tun:

  1. Der ursprüngliche .gitignore sollte die Konvention in Teams widerspiegeln,
  2. Nach dem Drücken wird der .gitignore gesichert, indem der Eintrag .gitignore .gitignore wird und diese Änderung erneut .gitignore Datei .gitignore wird auf diese Weise " versiegelt ".

Die " versiegelte " .gitignore Datei kann nur lokal geändert werden, ohne diese Wechsler an andere Teammitglieder .gitignore . Wenn jedoch eine Änderung im gesamten Team / in den Teams weitgehend akzeptiert wird, ist es möglich, sie zu "entsiegeln", sie zu ändern und dann erneut zu versiegeln. Das kann nicht versehentlich, nur absichtlich gemacht werden.

Leider kann man nicht zu 100% vor der Dummheit geschützt werden, aber auf diese Weise haben Sie alles getan, um zu verhindern, dass dumme Dinge passieren.

Wenn Sie ein relativ kleines Team mit sehr guten Profis haben, dann wäre das nicht wichtig, aber selbst diese Jungs würden es begrüßen, wenn Sie sich weniger Sorgen machen müssten.

Die Verwendung von .git/info/exclude ist cool, wenn Sie nichts über Infrastruktureinstellungen tun können, sondern nur Ihre eigenen abdecken und keinen Fehler machen.

Von einem Standpunkt von dem, was richtig ist und was falsch ist, stimme ich dafür überein, .gitignore-Eintrag in .gitignore Datei zu haben, jedem die Freiheit zu geben, lokal zu tun, was auch immer sie wollen, aber nicht andere zu .gitignore .


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 denke nicht, dass das eine gute Idee ist. Ich denke, dass die Ignorierdatei versionsgesteuert sein und verfolgt werden sollte. Ich stelle das nur der Vollständigkeit halber dar.


Nur wenn jemand anders den gleichen Schmerz hat wie wir. Wir wollten eine Datei ausschließen, die bereits festgeschrieben wurde.

Dieser Beitrag war viel nützlicher: Arbeiten mit .git / info / zu spät ausschließen

Insbesondere, was Sie brauchen, um eine Datei zu ignorieren, verwenden Sie eigentlich den Befehl git remove 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 alle Protokolldateien ausgeschlossen werden sollen)

Dies wird ausgeben, was ausgeschlossen wäre, wenn Sie es ausführen würden .

dann

Sie laufen es, indem Sie gehen

git rm *.log
(oder welcher Dateiname Pfad / Ausdruck Sie wollen)

*.log Sie dann eine *.log Zeile zu Ihrer .gitignore Datei hinzu.


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

Also, fügen Sie es Ihrem Repository hinzu, es sollte nicht manipuliert werden.

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

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


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

  1. Fügen Sie Ihre ~/.gitconfig Datei hinzu

    [core]
    excludesfile = /home/username/.gitignore
    
  2. Erstellen Sie eine ~/.gitignore Datei mit ~/.gitignore , die ignoriert werden sollen

  3. Speichern Sie Ihre Punktdateien in einem anderen Repo, so dass Sie ein Backup haben (optional).

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


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

Verwenden Sie diesen Befehl:

git update-index --assume-unchanged FILENAME_TO_IGNORE

Um es rückgängig zu machen (falls Sie Änderungen daran vornehmen wollen), benutzen Sie:

git update-index --no-assume-unchanged

UPDATE :

Gehen Sie wie folgt vor , um "unveränderte" Dateien unter dem aktuellen Verzeichnis aufzulisten:

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

Da die Option -v Kleinbuchstaben für 'unverändert übernommene' Dateien verwendet.


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

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


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 deiner Wildcard oder deinem Dateinamen

*pyc
*swp
*~

Wie viele andere bereits gesagt haben, sollte Ihr .gitignore von Git verfolgt werden (und sollte deshalb nicht ignoriert werden). Lass mich erklären warum.

(TL; DR: .gitignore die .gitignore Datei und verwenden Sie ein globales .gitignore , um Dateien zu ignorieren, die von Ihrer IDE oder Ihrem Betriebssystem erstellt wurden.)

Git ist, wie Sie wahrscheinlich schon wissen, ein verteiltes Versionskontrollsystem . Dies bedeutet, dass Sie zwischen verschiedenen Versionen hin- und herwechseln können (auch wenn die Entwicklung in verschiedene Zweige unterteilt ist) und es auch mehreren Entwicklern ermöglicht, an demselben Projekt zu arbeiten.

Obwohl das Verfolgen Ihrer .gitignore auch Vorteile .gitignore wenn Sie zwischen Snapshots wechseln, ist der wichtigste Grund für die Übertragung, dass Sie die Datei für andere Entwickler freigeben, die an demselben Projekt arbeiten. Wenn die Datei in Git übergeben wird, erhalten andere Mitwirkende automatisch die .gitignore Datei, wenn sie das Repository klonen, sodass sie sich keine Sorgen darüber machen müssen, dass sie versehentlich eine Datei übergeben, die nicht festgeschrieben werden sollte (z. B. Protokolldateien, Cacheverzeichnisse, Datenbankanmeldeinformationen usw.). Und wenn irgendwann die .gitignore - .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, die aber spezifisch für Sie sind und nicht für andere Entwickler gelten. Diese sollten jedoch nicht im .gitignore des Projekts .gitignore . Es gibt zwei weitere Orte, an denen Sie Dateien und Ordner ignorieren können:

  • Dateien und Ordner, die von Ihrem Betriebssystem oder Ihrer IDE erstellt werden, sollten in einem globalen .gitignore . Der Vorteil besteht darin, dass dieses .gitignore auf alle Repositories auf Ihrem Computer angewendet wird, sodass Sie dies nicht für jedes Repository wiederholen müssen. Und es wird nicht mit anderen Entwicklern geteilt, da sie möglicherweise ein anderes Betriebssystem und / oder eine andere IDE verwenden.
  • Dateien, die nicht in das .gitignore Projekt des .gitignore oder in das globale .gitignore , können ignoriert werden, indem explizite Repository- your_project_directory/.git/info/exclude in your_project_directory/.git/info/exclude . Diese Datei wird nicht mit anderen Entwicklern geteilt und ist spezifisch für dieses einzelne Repository

Navigiere zum Basisverzeichnis deines Git Repos und führe den folgenden Befehl aus:

echo '\\.*' >> .gitignore

Alle Dot-Dateien werden ignoriert, einschließlich des lästigen .DS_Store, wenn Sie sich auf einem Mac befinden.







gitignore