Aggiungi .gitignore a gitignore


140

È possibile aggiungere il .gitignorefile a .gitignorese stesso?

.gitignore

Non funziona però

Non voglio vederlo nei file modificati


8
perché vorresti farlo? impegna le tue modifiche. .gitignoredovrebbe far parte del tuo repository, elencando i modelli di file che sono spazzatura per il progetto.
KurzedMetal,

1
.gitignoredovrebbe far parte del tuo repository, in modo che tutti i membri del tuo team ignorino o effettuino il check-in degli stessi file. Solo perché .gitignoreè nelle cartelle del codice da qualche parte non significa che devi distribuirlo.
Ryan Lundy,


è possibile utilizzare git rm --cached .gitignoree untracking .gitignore
hassanzadeh.sd

Risposte:


170

Lo .gitignorescopo del file è impedire a tutti coloro che collaborano a un progetto di eseguire il commit accidentale di alcuni file comuni in un progetto, come i file di cache generati. Pertanto non dovresti ignorare .gitignore, dal momento che dovrebbe essere incluso nel repository.

Se si desidera ignorare i file in un solo repository ma si desidera evitare di eseguire il commit dell'elenco ignora (ad esempio per i file personali), è possibile aggiungerli .git/info/excludein quel repository.

Se si desidera ignorare determinati file su ogni repository sul proprio computer, è possibile creare il file ~/.gitignore_globaled eseguirlo

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

36

Un .gitignore può ignorarsi se non è mai stato registrato:

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)

Se fai il check-in .gitignore (prima di dirgli di ignorare se stesso), allora apparirà sempre nello stato git, anche se successivamente lo modifichi per ignorare se stesso.


1
Esatto, questo è il mio caso. Voglio avere un locale .gitignorecon git-svncui lavorare , che nessuno dovrebbe vedere. Quindi l'ho appena aggiunto a se stesso e ha funzionato. Ma poi ho cercato su google di vedere se alcune persone tese spiegheranno agli altri come questo sia "cattivo". Questa risposta dovrebbe essere accettata, e quindi voterei anche i .git/info/excludesuggerimenti. Quindi deve solo essere non monitorato ... Non molto sorprendente, almeno se sei mai stato "sovvertito" (svn).
Tomasz Gandor,

Ho .gitignoreprima ottenuto il backup del file. Quindi uso git rm .gitignoree commetto quel cambiamento. Alla fine, aggiungi e esegui .gitignorenuovamente il commit del file con la regola per .gitignore. Funziona!
qzhang,

4
Per risolvere questo problema puoi eseguire git rm --cached .gitignore.
Gideon,

19

Non c'è davvero un buon motivo per farlo. Se vuoi che i file vengano ignorati solo per il tuo clone , aggiungili a .git/info/exclude, non nel .gitignorefile.


sto ricevendo "Impossibile completare l'operazione a causa di modifiche esistenti al seguente file" e il file che elenca è quello che ho escluso. Qualche idea sul perché?
Paul McCarthy,

3

Dopo aver inserito il .gitignoretuo file gitignore, prova quanto segue,

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

Dovrebbe funzionare anche se, come già detto, ignorare gitignore può essere controproducente se il tuo repository è condiviso da più utenti.


2

Si, puoi; lo vedi ancora nei file modificati perché è ancora tracciato da git e i file tracciati da git sono sempre contrassegnati come modificati anche se si trovano in .gitignore. Quindi semplicemente non traccia non .

Ma perché non commettere o ripristinare le modifiche che hai su di esso? È un modo molto migliore per rimuoverlo dallo stato ... Inoltre, tieni presente che qualsiasi nuovo clone del tuo repository dovrà aggiungerne uno .gitignore, il che può essere fastidioso.


Sì, e got rm --cached .gitignoreprobabilmente dovrai rimuoverlo separatamente da git by .
Tadeck

git rm --cached .gitignore viene rimosso da git. Questo è distruttivo e non desiderabile. Come semplicemente ignorare .gitignore per il clone locale?
javadba,

0

Puoi farlo scrivendolo nel tuo file .gitignore. Il *aggiungerà tutto alla lista ignora e quindi !.gitignorerimuoverà il file .gitignore dalla lista ignora.

*
!.gitignore

3
Ciò ottiene il contrario di ciò che OP vuole però
Dmitry Parzhitsky il

Sì, giusto, ho già menzionato lo stesso. *ignorerà tutto. Incluso il .gitignorefile.
Ankit Singh,

1
Voglio dire, OP sta cercando di rimuovere il .gitignorefile dalla base di codice (aggiungendolo a se stesso, il che non ha davvero senso, ma chi sono io per giudicare). Qui posso vedere un suggerimento che assicura che il file non venga mai ignorato, il che a sua volta significa che esiste nel (viene aggiunto ) il codebase
Dmitry Parzhitsky

È corretto. La domanda stessa sembra contorta. Ma va bene.
Ankit Singh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.