Fügen Sie .gitignore zu gitignore hinzu


138

Ist es möglich, die .gitignoreDatei .gitignoreselbst hinzuzufügen ?

.gitignore

Funktioniert aber nicht

Ich möchte es nicht in bearbeiteten Dateien sehen


8
warum willst du das machen Übernehmen Sie einfach Ihre Änderungen. .gitignoresoll Teil Ihres Repositorys sein und Dateimuster auflisten, die für das Projekt Junk sind.
KurzedMetal

1
.gitignoresollte Teil Ihres Repositorys sein, damit jeder in Ihrem Team dieselben Dateien ignoriert oder eincheckt. Nur weil .gitignorees sich irgendwo in Ihren Codeordnern befindet, heißt das nicht, dass Sie es bereitstellen müssen.
Ryan Lundy


Sie können .gitignoregit rm --cached .gitignore
hassanzadeh.sd

Antworten:


169

Der .gitignoreZweck der Datei besteht darin, zu verhindern, dass jeder, der an einem Projekt zusammenarbeitet, versehentlich einige häufig verwendete Dateien in einem Projekt festschreibt, z. B. generierte Cache-Dateien. Daher sollten Sie nicht ignorieren .gitignore, da es im Repository enthalten sein soll.

Wenn Sie Dateien in nur einem Repository ignorieren möchten, aber die Ignorierliste nicht festschreiben möchten (z. B. für persönliche Dateien), können Sie sie .git/info/excludein diesem Repository hinzufügen .

Wenn Sie bestimmte Dateien in jedem Repository auf Ihrem Computer ignorieren möchten, können Sie die Datei erstellen ~/.gitignore_globalund dann ausführen

git config --global core.excludesfile ~/.gitignore_global

35

Ein .gitignore kann sich selbst ignorieren, wenn er nie eingecheckt wurde:

mhaase@ubuntu:~$ git --version
git version 1.7.9.5
mhaase@ubuntu:~$ git init temp
Initialized empty Git repository in /home/mhaase/temp/.git/
mhaase@ubuntu:~$ cd temp
mhaase@ubuntu:~/temp$ touch .gitignore foo bar baz bat
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       bar
#       bat
#       baz
#       foo
mhaase@ubuntu:~/temp$ echo "foo" >> .gitignore
mhaase@ubuntu:~/temp$ echo ".gitignore" >> .gitignore
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       bar
#       bat
#       baz
nothing added to commit but untracked files present (use "git add" to track)

Wenn Sie .gitignore einchecken (bevor Sie es anweisen, sich selbst zu ignorieren), wird es immer im Git-Status angezeigt, auch wenn Sie es später so ändern, dass es sich selbst ignoriert.


1
Genau das ist mein Fall. Ich möchte einen Einheimischen .gitignorezum Arbeiten haben git-svn, den niemand sehen sollte. Also habe ich es einfach selbst hinzugefügt und es hat einfach funktioniert. Aber dann habe ich gegoogelt, um zu sehen, ob einige nervöse Leute anderen erklären, wie "schlecht" das ist. Diese Antwort sollte akzeptiert werden, und dann würde ich auch die .git/info/excludeVorschläge positiv bewerten . Es muss also nur nicht verfolgt werden ... Nicht sehr überraschend, zumindest wenn Sie jemals "untergraben" wurden (svn).
Tomasz Gandor

Ich habe zuerst eine .gitignoreDatei gesichert. Dann nutze git rm .gitignoreund begebe ich diese Änderung. Zuletzt fügen Sie die .gitignoreDatei mit der Regel für hinzu und schreiben sie erneut fest .gitignore. Es klappt!
Qzhang

3
Um dies zu beheben, können Sie ausführen git rm --cached .gitignore.
Gideon

18

Es gibt keinen guten Grund dafür. Wenn Sie möchten, dass Dateien nur für Ihren Klon ignoriert werden, fügen Sie sie zu .git / info / exclude hinzu, nicht zu .gitignore


Ich erhalte die Meldung "Der Vorgang kann aufgrund bestehender Änderungen an der folgenden Datei nicht abgeschlossen werden" und in der darin aufgeführten Datei ist die Datei aufgeführt, die ich ausgeschlossen habe. Irgendeine Idee warum?
Paul McCarthy

3

.gitignoreVersuchen Sie nach Eingabe Ihrer Gitignore-Datei Folgendes:

git rm -r --cached .
git add --all
git commit -m "ignoring gitignore"
git push --set-upstream origin master

Es sollte funktionieren, obwohl, wie bereits gesagt, das Ignorieren von Gitignore kontraproduktiv sein kann, wenn Ihr Repo von mehreren Benutzern geteilt wird.


2

Ja, du kannst; Sie sehen es immer noch in bearbeiteten Dateien, da es immer noch von git verfolgt wird und Dateien, die von git verfolgt werden, immer als geändert markiert werden, selbst wenn sie sich in .gitignore befinden. Also einfach aufspüren .

Aber warum nicht Änderungen vornehmen oder zurücksetzen, die Sie vorgenommen haben? Es ist eine viel bessere Möglichkeit, es aus dem Status zu entfernen ... Beachten Sie auch, dass jeder neue Klon Ihres Repos seine hinzufügen muss .gitignore, was ärgerlich sein kann.


Ja, und Sie müssen es got rm --cached .gitignorewahrscheinlich separat von git by entfernen .
Tadeck

Der git rm --cached .gitignore wird aus git entfernt. Das ist destruktiv und nicht wünschenswert. Wie kann man .gitignore für den lokalen Klon einfach ignorieren?
Javadba

0

Sie können dies erreichen, indem Sie dies in Ihre .gitignore-Datei schreiben. Das *fügt alles hinzu, um die Liste zu ignorieren, und entfernt dann !.gitignoredie .gitignore-Datei aus der Ignorierliste.

*
!.gitignore

3
Dies erreicht das Gegenteil von dem, was OP will
Dmitry Parzhitsky

Ja, richtig, ich habe das schon erwähnt. *wird alles ignorieren. Einschließlich der .gitignoreDatei.
Ankit Singh

1
Ich meine, OP versucht , die .gitignoreDatei aus der Codebasis zu entfernen (indem es sie zu sich selbst hinzufügt, was nicht wirklich Sinn macht, aber wer bin ich, um zu beurteilen). Hier kann ich einen Vorschlag sehen, der sicherstellt, dass die Datei niemals ignoriert wird, was wiederum bedeutet, dass sie in der Codebasis vorhanden ist ( hinzugefügt wird )
Dmitry Parzhitsky

Das ist richtig. Die Frage selbst scheint verdreht. Aber okay.
Ankit Singh
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.