¿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.
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
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.
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,
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.
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.
.gitignore
se supone que es parte de su repositorio, enumerando patrones de archivos que son basura para el proyecto..gitignore
debe ser parte de su repositorio, para que todos en su equipo ignoren o ingresen los mismos archivos. El hecho de que.gitignore
esté en sus carpetas de código en algún lugar no significa que tenga que implementarlo.git rm --cached .gitignore
y destrabar .gitignoreRespuestas:
El
.gitignore
propó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/exclude
ese repositorio.Si desea ignorar ciertos archivos en cada repositorio en su máquina, puede crear el archivo
~/.gitignore_global
y luego ejecutarfuente
Un .gitignore puede ignorarse a sí mismo si nunca se ha registrado:
Si registras .gitignore (antes de decirle que se ignore a sí mismo), siempre aparecerá en estado git, incluso si luego lo modificas para ignorarlo.
fuente
.gitignore
para trabajargit-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/exclude
sugerencias. Por lo tanto, solo necesita ser rastreado ... No es muy sorprendente, al menos si alguna vez has sido "subvertido" (svn)..gitignore
archivo tengo copia de seguridad primero. Luego usogit rm .gitignore
y comento ese cambio. Por último, agregue y confirme el.gitignore
archivo nuevamente con la regla para.gitignore
. ¡Funciona!git rm --cached .gitignore
.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.gitignore
archivo.fuente
Después de ingresar
.gitignore
su archivo gitignore, intente lo siguiente,Debería funcionar aunque, como ya se dijo, ignorar gitignore puede ser contraproducente si su repositorio es compartido por múltiples usuarios.
fuente
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.fuente
got rm --cached .gitignore
.Puede lograr esto escribiendo esto en su archivo .gitignore. La
*
añadirá a la lista de ignorar todo y luego!.gitignore
se quitará el archivo .gitignore de la lista de ignorados.fuente
*
ignorará todo. Incluyendo el.gitignore
archivo..gitignore
archivo 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