Antworten:
Der Vorteil von .gitignore
ist, dass es im Gegensatz zum Repository selbst eingecheckt werden kann .git/info/exclude
. Ein weiterer Vorteil ist, dass Sie im .gitignore
Gegensatz zu mehreren Verzeichnissen mehrere Dateien haben können, eine in jedem Verzeichnis / Unterverzeichnis für verzeichnisspezifische Ignorierregeln .git/info/exclude
.
Ist .gitignore
also für alle Klone des Repositorys verfügbar. Daher ist in großen Teams alle Menschen die gleiche Art von Dateien Beispiel ignorieren *.db
, *.log
. Und Sie können spezifischere Ignorierregeln haben, weil es mehrere gibt .gitignore
.
.git/info/exclude
ist nur für einzelne Klone verfügbar, daher ist das, was eine Person in ihrem Klon ignoriert, im Klon einer anderen Person nicht verfügbar. Wenn beispielsweise jemand Eclipse
für die Entwicklung verwendet, kann es für diesen Entwickler sinnvoll sein, einen .build
Ordner hinzuzufügen , .git/info/exclude
da andere Entwickler Eclipse möglicherweise nicht verwenden.
Im Allgemeinen sollten Dateien / Ignorierregeln, die allgemein ignoriert werden müssen, aufgenommen werden .gitignore
, andernfalls sollten Dateien, die Sie nur auf Ihrem lokalen Klon ignorieren möchten, aufgenommen werden.git/info/exclude
~/.gitignore
in Ihrem Kommentar oben eingegangen werden soll . Mein Verständnis ist, dass Ignorierregeln auf drei Ebenen liegen können - $PROJECT/.git/info/exclude
für (projekt-, benutzer-) spezifische Ignorierregeln, dh $PROJECT/<any number of directories>/.gitignore
für projektspezifische Ignorierregeln für jeden Benutzer an einem beliebigen Ort (beim Einchecken), ~/.gitignore
für benutzerspezifische Ignorierregeln für jedes Projekt für diesen Benutzer auf dieser Maschine. Basierend auf dem Ziel wählen Sie den Ort aus, an dem Sie einen Eintrag
git rm --cached <path-name>
Löscht es aus dem Repository, behält es jedoch lokal bei. git update-index --skip-worktree <path-name>
Änderungen an der Datei werden ignoriert, aber im Repository gespeichert. Aus Neugier: Warum soll die sln-Datei ausgeschlossen werden? Es ist ein wichtiger Teil einer .Net-Lösung, oder?
Googelt: 3 Möglichkeiten zum Ausschließen von Dateien
.gitignore
gilt für jeden Klon dieses Repositorys (versioniert, jeder wird es haben),.git/info/exclude
gilt nur für Ihre lokale Kopie dieses Repositorys (lokal, nicht für andere freigegeben),~/.gitignore
gilt für alle Repositorys auf Ihrem Computer (lokal, nicht für andere freigegeben).3.
erfordert tatsächlich eine Konfiguration auf Ihrem Computer festzulegen:
git config --global core.excludesfile '~/.gitignore'
.git/info/excludes
, wenn dies der Fall sein sollte .git/info/exclude
. Dies wird durch die Dokumentation bestätigt, auf die es verweist.
Nur um unsere (reale) Erfahrung zu bieten: Wir haben mit der Verwendung von .git / info / exclude begonnen, als wir einige Konfigurationsdateien in jeder Entwicklungsumgebung anpassen mussten, aber dennoch wollten, dass die Quelle im Repo beibehalten und anderen Entwicklern zur Verfügung steht.
Auf diese Weise können die lokalen Dateien, sobald sie geklont und geändert wurden, von Commits ausgeschlossen werden, ohne die Originaldateien im Repo zu beeinträchtigen, ohne jedoch im Repo unbedingt ignoriert zu werden.
Verwenden Sie .gitignore
für die Regeln ignorieren , die spezifisch für das sind Projekt . Verwenden Sie exclude
oder eine globale Ignorierdatei, um Regeln zu ignorieren, die für Ihre Umgebung spezifisch sind .
Beispielsweise ignorieren meine globalen Ignorierdateien die temporären Dateien, die von dem von mir verwendeten Editor generiert wurden. Diese Regel ist spezifisch für meine Umgebung und kann für andere Entwickler im selben Projekt unterschiedlich sein (möglicherweise verwenden sie einen anderen Editor). OTOH, meine Projektdateien .gitignore
ignorieren Dinge wie API-Schlüssel und Build-Artefakte - diese sind für das Projekt und sollten für alle im Projekt gleich sein.
Hilft das?