Añadir .gitignore a gitignore

140

¿Es posible agregar el .gitignorearchivo a .gitignoresí mismo?

.gitignore

Aunque no funciona

No quiero verlo en archivos editados

7ochem
fuente
8
¿Por qué querrías hacer eso? solo confirma tus cambios. .gitignorese supone que es parte de su repositorio, enumerando patrones de archivos que son basura para el proyecto.
KurzedMetal
1
.gitignoredebe ser parte de su repositorio, para que todos en su equipo ignoren o ingresen los mismos archivos. El hecho de que .gitignoreesté en sus carpetas de código en algún lugar no significa que tenga que implementarlo.
Ryan Lundy
posible duplicado de ¿Cómo le digo a Git que ignore ".gitignore"?
Ese chico brasileño
puede usar git rm --cached .gitignorey destrabar .gitignore
hassanzadeh.sd

Respuestas:

170

El .gitignorepropósito del archivo es evitar que todos los que colaboran en un proyecto comprometan accidentalmente algunos archivos comunes en un proyecto, como los archivos de caché generados. Por lo tanto, no debe ignorar .gitignore, ya que se supone que debe estar incluido en el repositorio.

Si desea ignorar los archivos en un solo repositorio pero quiere evitar comprometer la lista de ignorados (por ejemplo, para archivos personales), puede agregarlos a .git/info/excludeese repositorio.

Si desea ignorar ciertos archivos en cada repositorio en su máquina, puede crear el archivo ~/.gitignore_globaly luego ejecutar

git config --global core.excludesfile ~/.gitignore_global
Lars Nyström
fuente
36

Un .gitignore puede ignorarse a sí mismo si nunca se ha registrado:

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)

Si registras .gitignore (antes de decirle que se ignore a sí mismo), siempre aparecerá en estado git, incluso si luego lo modificas para ignorarlo.

Mark E. Haase
fuente
1
Exactamente, este es mi caso. Quiero tener un local .gitignorepara trabajar git-svn, que nadie debería ver. Entonces lo agregué a sí mismo y simplemente funcionó. Pero luego busqué en Google para ver si algunas personas tensas explicarán a otros cómo esto es "malo". Esta respuesta debe ser aceptada, y luego también votaría las .git/info/excludesugerencias. Por lo tanto, solo necesita ser rastreado ... No es muy sorprendente, al menos si alguna vez has sido "subvertido" (svn).
Tomasz Gandor
Tengo el .gitignorearchivo tengo copia de seguridad primero. Luego uso git rm .gitignorey comento ese cambio. Por último, agregue y confirme el .gitignorearchivo nuevamente con la regla para .gitignore. ¡Funciona!
qzhang
44
Para arreglar esto puedes correr git rm --cached .gitignore.
Gideon el
19

Realmente no hay una buena razón para hacer esto. Si desea que los archivos se ignoren solo para su clon , agréguelos .git/info/exclude, no en el .gitignorearchivo.

Daenyth
fuente
Me aparece "No se puede completar la operación debido a los cambios existentes en el siguiente archivo" y el archivo que contiene es el que tengo excluido. ¿Alguna idea de por qué?
Paul McCarthy
3

Después de ingresar .gitignoresu archivo gitignore, intente lo siguiente,

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

Debería funcionar aunque, como ya se dijo, ignorar gitignore puede ser contraproducente si su repositorio es compartido por múltiples usuarios.

Arnab Sanyal
fuente
2

Sí tu puedes; todavía lo ve en archivos editados porque todavía está rastreado por git, y los archivos rastreados por git siempre están marcados como modificados, incluso si están en .gitignore. Así que simplemente destraza .

Pero, ¿por qué no cometer o restablecer los cambios que tiene? Es una forma mucho mejor de eliminarlo del estado ... También tenga en cuenta que cualquier clon nuevo de su repositorio tendrá que agregarlo .gitignore, lo que puede ser molesto.

CharlesB
fuente
Sí, y probablemente deba eliminarlo por separado de git got rm --cached .gitignore.
Tadeck
el git rm --cach .gitignore se está eliminando de git. Eso es destructivo y no deseable. ¿Cómo simplemente ignorar .gitignore para el clon local?
Java
0

Puede lograr esto escribiendo esto en su archivo .gitignore. La *añadirá a la lista de ignorar todo y luego !.gitignorese quitará el archivo .gitignore de la lista de ignorados.

*
!.gitignore
Ankit Singh
fuente
3
Sin embargo
Dmitry Parzhitsky
Sí, correcto, ya he mencionado lo mismo. *ignorará todo. Incluyendo el .gitignorearchivo.
Ankit Singh
1
Quiero decir, OP está tratando de eliminar el .gitignorearchivo de la base de código (agregándolo a sí mismo, lo que realmente no tiene sentido, pero quién soy yo para juzgar). Aquí puedo ver una sugerencia que garantiza que el archivo nunca se ignore, lo que a su vez significa que existe (se agrega ) a la base de código
Dmitry Parzhitsky
Eso es correcto. La pregunta en sí parece retorcida. Pero está bien.
Ankit Singh