Añadir .gitignore a gitignore


140

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

.gitignore

Aunque no funciona

No quiero verlo en archivos editados


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


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

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.


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.


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.


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.


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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.