¿Hay un comando de ignorar para git como hay para svn?

125

Soy un nuevo usuario gity estoy comenzando un nuevo proyecto. Tengo un montón de archivos de puntos que me gustaría ignorar. ¿Hay un comando ignorar para gitcomo hay para svn?

Chris J
fuente
1
Buena alternativa a gitignore: git update-index --asum-sin cambios <file> , gracias a stackoverflow.com/a/16442091/2162226
Gene Bo

Respuestas:

136

No hay un git ignorecomando especial .

Edite un .gitignorearchivo ubicado en el lugar apropiado dentro de la copia de trabajo. Luego debe agregar esto .gitignorey confirmarlo. Todos los que clonen ese repositorio tendrán que ignorar esos archivos.

Tenga en cuenta que solo los nombres de archivo que comiencen /serán relativos al directorio .gitignoreen el que reside. Todo lo demás coincidirá con los archivos en cualquier subdirectorio.

También puede editar .git/info/excludepara ignorar archivos específicos solo en esa copia de trabajo. El .git/info/excludearchivo no se confirmará y, por lo tanto, solo se aplicará localmente en esta copia de trabajo.

También puede configurar un archivo global con patrones para ignorar git config --global core.excludesfile. Esto se aplicará localmente a todas las copias de trabajo de git en la misma cuenta de usuario.

Ejecute git help gitignorey lea el texto para los detalles.

ndim
fuente
75
No tener un simple comando de ignorar parece un descuido por parte del equipo de git.
jcollum
44
@jcollum A primera vista lo hace, pero la simplicidad de alias de un comando para agregar nuevos Y la complejidad de crear uno y trabajar a través de todos los casos límite / problemas / problemas potenciales de editar un archivo de texto también tiene sentido dejarlo en manos del usuario. Me siento en conflicto porque estoy de acuerdo y en desacuerdo contigo.
abelito
100

Un comando git ignore muy útil viene con el increíble tj / git-extras .

Aquí hay algunos ejemplos de uso:

Lista todos los patrones ignorados actualmente

git ignore

Agregar un patrón

git ignore "*.log"

Agregue una de las plantillas de gitignore.io

git ignore-io -a rails

git-extras proporciona muchos más comandos útiles. Definitivamente vale la pena probarlo.

Nicolai Fröhlich
fuente
1
Entonces, si uso git ignore "index.html", ¿ignorará este archivo?
JohnAndrews
¿Sigue siendo aplicable el comando -t? Cuando lo ejecuto, solo agrega -t y cualquier plantilla que intente agregar al archivo git ignore
Bynho
50

En Linux / Unix, puede agregar archivos al archivo .gitignore con el echocomando. Por ejemplo, si desea ignorar todas las .svncarpetas, ejecute esto desde la raíz del proyecto:

echo .svn/ >> .gitignore
pfrenssen
fuente
1
Descubrí este tweet usando esa sintaxis twitter.com/noodl_io/status/669904872704253953
JohnAndrews el
3
En Git Bash en Windows, necesitaba agregar un /'\' anterior y posterior (para crear una nueva línea), como echo /nbproject/project.properties\ >> .gitignorey echo /nbproject/project.xml\ >> .gitignore.
Ryan
15

Tiene dos formas de ignorar los archivos:

  • .gitignoreen cualquier carpeta ignorará los archivos como se especifica en el archivo para esa carpeta. El uso de comodines es posible.
  • .git/info/excludecontiene el patrón de ignorar global, similar al global-ignoresarchivo de configuración en subversiones.
hermano azul
fuente
66
Tenga en cuenta que los patrones en el .gitignorearchivo que no contienen '/' coinciden de forma recursiva (es decir, también en todos los subdirectorios del directorio en el .gitignoreque se encuentra el archivo), al contrario del caso de las svn:ignorepropiedades de directorio en Subversion.
Jakub Narębski el
6

Espero que no sea demasiado tarde.

Si está en Windows, puede hacer lo siguiente para crear un archivo .gitignore

echo name_of_the_file_you_want_to_ignore.extension > .gitignore

Para editar .gitignore puedes ejecutar

notepad .gitignore
Nesar
fuente
2
¡No lo use si ya tiene un archivo .gitignore, lo sobrescribirá! Para agregar el archivo a ignorar, use esto: echo ignore.ext >> .gitignore
TomEberhard
Tienes razón, es recomendable usarlo solo si el archivo .gitignore no existe. Es mejor usar "notepad .gitignore", si tiene un archivo .gitignore lo abrirá, y si no lo hace, creará uno, y luego podrá agregar todos los archivos desde el bloc de notas. 1 archivo / carpeta por línea
Nesar
3

Cree un archivo llamado .gitignore en la raíz de su repositorio. En este archivo pones la ruta relativa a cada archivo que deseas ignorar en una sola línea. Puedes usar el *comodín.

Bruno Reis
fuente
2

Usando las respuestas ya proporcionadas, puede rodar su propio git ignorecomando usando un alias . Agregue esto a su archivo ~ / .gitconfig:

ignore = !sh -c 'echo $1 >> .gitignore' -

O ejecute este comando desde el shell (* nix) de su elección:

git config --global alias.ignore '!sh -c "echo $1 >> .gitignore" -'

También puede crear un git excludecomando reemplazando ignorecon excludey .gitignorecon .git/info/excludeen lo anterior.

(Si aún no comprende la diferencia entre estos dos archivos después de haber leído las respuestas aquí, consulte esta pregunta ).

daemonexmachina
fuente
1
La respuesta aquí expande $ 1 correctamente: stackoverflow.com/a/21884533/1465227
Archangel33
2

para nombres no presentes en la copia de trabajo o repositorio:

echo /globpattern >> .gitignore

o para un archivo existente (línea de comando de tipo sh):

echo /$(ls -1 file) >> .gitignore   # I use tab completion to select the file to be ignored  
git rm -r --cached file             # if already checked in, deletes it on next commit
nrbray
fuente
1

Es útil definir un archivo .gitignore completo para su proyecto. La recompensa es el uso seguro del conveniente --allo -aindicador de comandos como addy commit.

Además, considere definir un archivo global ~ / .gitignore para patrones comúnmente ignorados tales como *~ , que cubre archivos temporales creados por Emacs.

seh
fuente
1

Tienes que instalar git-extras para esto. Puedes instalarlo en Ubuntu usando apt-get,

$ sudo apt-get install git-extras

Entonces puedes usar el comando git ignore.

$ git ignore file_name
Vidura Mudalige
fuente
3
En Mac, si tiene instalado Homebrew, puede ejecutarlo brew install git-extras.
Alex Glover
0

También puedes usar gitignore.io de Joe Blau

Ya sea a través de la interfase web https://www.gitignore.io/

O instalando la herramienta CLI, es muy fácil y rápido, simplemente escriba lo siguiente en su terminal:

Linux:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bashrc && source ~/.bashrc

OSX:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bash_profile && source ~/.bash_profile

Y luego puede escribir giseguido de todos los elementos de plataforma / entorno para los que necesita criterios de gitignore.

¡Ejemplo!
Digamos que está trabajando en un proyecto de nodo que incluye gruñido y está utilizando webstorm en Linux, entonces puede escribir:
gi linux,webstorm,node,grunt > .gitignore(para crear un archivo nuevo)
o
gi linux,webstorm,node,grunt >> .gitignore(para agregar / agregar las nuevas reglas a un archivo existente )

bam, eres bueno para ir

JorgeArtware
fuente