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

7ochem
quelle
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
mögliches Duplikat von Wie kann ich Git anweisen, ".gitignore" zu ignorieren?
Dieser Brasilianer
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
Lars Nyström
quelle
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.

Mark E. Haase
quelle
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

Daenyth
quelle
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.

Arnab Sanyal
quelle
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.

CharlesB
quelle
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
Ankit Singh
quelle
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