Ignorar directorios en repositorios de Git en Windows

¿Cómo puedo ignorar directorios o carpetas en Git usando msysgit en Windows?

preguntado el 05 de diciembre de 08 a las 10:12

¿Desea que la carpeta de caché se excluya del repositorio por completo o solo su contenido? -

Supongo que el OP tiene varios directorios de caché, cuyo contenido debe ignorarse, pero quiere asegurarse de que esos directorios se creen para cualquiera que clone el repositorio. -

@Gareth: dado que las carpetas vacías no se rastrean con git, si se ignora el contenido, la carpeta también lo será, ¿no es así? -

Solo mencioné eso porque algunas personas usan archivos ocultos (comúnmente .gitkeep) para indicar un directorio que debe mantenerse -

es la / al final, ¿qué le hace saber que es un directorio que debería ignorar? -

19 Respuestas

Crea un archivo llamado .gitignore en el directorio de su proyecto. Ignore los directorios ingresando el nombre del directorio en el archivo (con una barra inclinada):

dir_to_ignore/

Para más información, aquí.

respondido 14 nov., 19:13

En un indicador de Windows cmd, puede usar 'editar .gitignore' o 'bloc de notas .gitignore' para crear el archivo correcto. - joey verde

O también puede usar 'touch .gitignore' desde el símbolo del sistema de Windows git bash y eso creará el archivo con el nombre correcto que luego puede ser editado por el bloc de notas o similar ... - SGB

O simplemente cree un archivo llamado .gitignore. con el explorador y edítelo con el bloc de notas (se eliminará el punto final). De esa forma, no es necesario utilizar el símbolo del sistema. - P. Galbraith

O puede vim .gitignore desde la terminal. :) - mollygato

O, que sorprendentemente no se ha mencionado a pesar de que es la forma más rápida, simplemente escriba "echo folder_to_ignore >> .gitignore" en la consola. - orfebre

De forma predeterminada, el Explorador de Windows mostrará .gitignore cuando en realidad el nombre del archivo es .gitignore.txt.

Git no usará .gitignore.txt

Y no puede cambiar el nombre del archivo a .gitignore, porque el Explorador de Windows cree que es un archivo de tipo gitignore sin nombre.

Solución sin línea de comandos:

Puede cambiar el nombre de un archivo a ".gitignore".y creará ".gitignore"

Respondido el 17 de diciembre de 19 a las 11:12

¿Eso funciona? Siempre le he dicho a la gente que abra el bloc de notas y en el cuadro de diálogo Guardar como escriba el nombre del archivo entre comillas dobles, por ejemplo ".gitignore" y lo guarda sin agregar automáticamente una extensión. - maestro de flechas

Limpio. Incluir un período final funciona. Explorer elimina el último punto, lo que da como resultado un archivo llamado ".gitignore". Sin embargo, creo que el método de las citas es más limpio y es menos probable que cree sorpresas. - Triynko

O, en el cuadro de diálogo Guardar como, cambie el tipo de archivo a "Todos los archivos (.) "- entonces Windows no agregará ninguna extensión. - OsakaWebbie

o en git bash simplemente escribe "touch .gitignore" en tu carpeta - Rayjax

".gitignore." - ¡Este es un gran truco! Siempre tuve problemas con .htaccess también... - Obmerk Kronen

Parece que para ignorar archivos y directorios hay dos formas principales:

  1. .gitignore

    • Colocación .gitignore archivo en la raíz de su repositorio además del .git carpeta (en Windows, asegúrese de ver la verdadera extensión de archivo y luego hacer .gitignore. (con el punto al final para hacer una extensión de archivo vacía))
    • Haciendo la configuración global ~/.gitignore_global y funcionando git config --global core.excludesfile ~/.gitignore_global para agregar esto a su configuración de Git

    Nota: los archivos rastreados antes se pueden eliminar ejecutando git rm --cached filename

  2. Repositorio excluir - Para archivos locales que no necesitan ser compartidos, simplemente agregue el patrón de archivo o directorio al archivo .git/info/exclude. Estas reglas no están comprometidas, por lo que no son vistos por otros usuarios. Más información es aquí.

Para hacer excepciones en la lista de archivos ignorados, consulte esta pregunta.

respondido 14 nov., 19:14

buen trabajo señalando el git rm --cached <filename>. Absolutamente crítico para los repositorios que existían ANTES de que crearas el .gitignore - maurerpower

git rm --caché solucionó el problema que estaba teniendo con .gitignore :) - CarneSaborDev

Sí, git rm: el nombre de archivo en caché es absolutamente crucial. Me estaba volviendo loco ya que git todavía estaba almacenando archivos que claramente dije que fueran ignorados (gitignore creado después de la confirmación inicial). ¡Muchas gracias! - Papa

Resolvió mi problema. Git estaba rastreando la carpeta del proveedor en mi repositorio de laravel a pesar de que había agregado la carpeta del proveedor en gitignore. Muchas gracias. - Jayant

mi carpeta de compilaciones estaba siendo rastreada. Debe haber sido agregado a .gitignore después de una compilación. De todos modos, el comando para eliminar el seguimiento de la carpeta es este: git rm --cached builds -r (donde builds es la carpeta que desea eliminar y -r es recursivo, lo que significa que todos los archivos y subcarpetas no se rastrearán) - D. Kermott

Tuve algunos problemas al crear un archivo en Explorador de Windows con un . al principio.

Una solución fue ir al shell de comandos y crear un nuevo archivo usando "editar".

respondido 14 nov., 19:13

o simplemente agrega un extra . al final el explorador deja de pensar .gitignore es la extensión. Luego, en la entrada, ese punto final sin extensión simplemente se come y te quedas con .gitignore TL; DR: intenta nombrarlo .gitignore. => terminas con .gitignore - leerssej

Para indicarle a Git que ignore ciertos archivos o carpetas, debe crear .gitignore archivo.

Pero en el Explorador de Windows debe proporcionar un nombre para el archivo. Simplemente no puede crear un archivo con solo una extensión. El truco es crear un archivo de texto vacío, ir al símbolo del sistema y cambiar el nombre del archivo a .gitignore:

ren "New Text Document.txt" .gitignore

Ahora abra el archivo con su editor de texto favorito y agregue los nombres de archivo / carpeta que desea ignorar. También puede usar comodines como este: *.txt.

respondido 14 nov., 19:13

O simplemente: echo dir_to_ignore /> .gitignore - Oliver

Or type nul > .gitignore para crear un archivo vacío - castro roy

O simplemente llame al archivo .gitignore. cuando las extensiones de archivo no están ocultas en su explorador de Windows - Vairis

Si desea mantener una carpeta y no los archivos dentro de ella, simplemente coloque un archivo ".gitignore" en la carpeta con "*" como contenido. Este archivo hará que Git ignore todo el contenido del repositorio. Pero .gitignore se incluirá en su repositorio.

$ git add path/to/folder/.gitignore

Si agrega una carpeta vacía, recibe este mensaje (.gitignore es un archivo oculto)

The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added

Entonces, use "-f" para forzar la adición:

$ git add path/to/folder/.gitignore -f

respondido 14 nov., 19:14

Para ignorar un directorio completo en Git, la forma más fácil es incluir un archivo .gitignore dentro del directorio de destino que simplemente contiene "*".

Un ejemplo ilustrativo,

Sistema de ejemplo

/root/
    .gitignore
    /dirA/
        someFile1.txt
        someFile2.txt
    /dirB/
        .gitignore
        someFile3.txt
        someFile4.txt

Objetivo

  • ignorar el contenido de / dirB /

Nivel superior (/root/.gitignore)

  • Aquí es donde va su información estándar de gitignore (por ejemplo, un "~ Untitled.docx", algunos directorios privados, etc.). "DirB /" ciertamente se puede colocar aquí, si es necesario

Directorio ignorado (/root/dirB/.gitignore)

  • Git busca gitignore en cada paso del sistema de archivos, por lo que cada vez que ignore las especificaciones para aplicar, luego tírelo, generando un nuevo gitignore para ese directorio.

  • dirB / .gitignore simplemente se lee como "*" y todo el contenido se ignora por completo, ¡en sí mismo y en todos los archivos!

Y es así de simple :)

Respondido el 25 de junio de 20 a las 13:06

¿Cuál es la información estándar de gitignore? ¿Puede dar un ejemplo? ¿Qué quiere decir cuando dice "el archivo simplemente se lee como *", esto no tiene ningún sentido? No creo que entendí nada de esta respuesta y no pude encontrarla en absoluto simple. - skdhfgeq2134

El archivo es de un carácter, un solo '*'. Revisaré y compartiré más detalles en un momento: j-dizzle

Siento que esto es más limpio porque no desordena su archivo .gitignore principal - felizcodificador97

@ skdhfgeq2134 en inglés, cuando dices "X se lee como Y" significa "Y se escribe en / en X" - franco z

Elabore por favor, ¡no estoy seguro de lo que está diciendo! Comparte más detalles y lo actualizaré - j-dizzle

En Windows, hay un problema adicional con las barras. Excluyendo un solo directorio en .gitignore con

dir_to_excluir /

posiblemente funcione, pero excluyendo todos los directorios con

/

causa problemas cuando tiene nombres de archivo con espacios (como my file.txt) en su directorio: Git Bash escapa de estos espacios con una barra invertida (como my\ file.txt) y Git para Windows no distingue entre / y \.

Para excluir todos los directorios, mejor use:

** /

Dos asteriscos consecutivos significan el contenido del directorio.

respondido 14 nov., 19:14

También en tu \.git\info directorio de proyectos hay un archivo de exclusión que es efectivamente lo mismo que .gitignore (Creo). Puede agregar archivos y directorios para ignorar en eso.

Respondido 08 Abr '16, 18:04

Me gusta este enfoque, simplemente no puedo llevarme bien con la ruta allí, quiero ignorar una carpeta en el repositorio principal, ¿cómo? - Shimmy Weitzhandler

¿Pero no se supone que debe dejar los archivos en .git solo (manipular el contenido a través de medios oficiales)? - Pedro Mortensen

Puede crear el archivo ".gitignore" con el contenido:

*
!.gitignore

Esto funciona para mi.

respondido 14 nov., 19:23

Esta es la mejor respuesta, también aporta beneficios adicionales en la implementación y el mantenimiento de proyectos. - Nitin ...

Quién es "simples"? - Pedro Mortensen

@PeterMortensen, "La vida es realmente simple, pero insistimos en complicarla" - Confucio - Calraiden

Necesitaba agregar también /.gitgnore para ignorar también el archivo .gitignore en sí - diego favero

En caso de que necesite excluir subcarpetas, puede utilizar el ** comodín para excluir cualquier nivel de subdirectorio.

**/build/output/Debug/

Respondido 17 Feb 18, 00:02

¿Dónde debo agregar esta expresión? - skdhfgeq2134

En el momento en que todo lo demás falla intenta editar el archivo

/.git/info/excluir

y agregando los directorios que desea al final del archivo, así:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/

Agregué las carpetas "activos" y "compilado" a la lista de archivos y directorios para ignorar.

Respondido 04 Abr '18, 22:04

Estoy usando Atom en Windows 10. ¡Está funcionando! Gracias amigo! - putu de

Probé todos los demás con mi configuración actual y esta fue mi respuesta definitiva. - Xedret

En Unix:

touch .gitignore

En Windows:

echo > .gitignore

Estos comandos ejecutados en una terminal crearán un .gitignore archivo en la ubicación actual.

Luego solo agrega información a esto .gitignore archivo (usando Notepad ++ por ejemplo) qué archivos o carpetas deben ignorarse. Guarde sus cambios. Eso es :)

Más información: .gitignore

respondido 14 nov., 19:14

¿Hay alguna forma específica en la que debamos agregar los archivos? Como, simplemente escribiré los archivos separados por espacio y buscará estos archivos en toda la carpeta raíz. ¿Debo agregar la ruta de los archivos a este archivo gitignore? ¿Dónde debería crear este archivo .gitignore, en el directorio raíz? - skdhfgeq2134

He tenido algunos problemas para conseguir que Git capte el .gitignore archivo en Windows. La $GIT_DIR/info/exclude Sin embargo, el archivo siempre parece funcionar.

La desventaja de este enfoque, sin embargo, es que los archivos en el $GIT_DIR El directorio no se incluye en el registro y, por lo tanto, no se comparte.

PD $GIT_DIR suele ser la carpeta oculta llamada .git

respondido 14 nov., 19:13

Sí, git en Windows es realmente quisquilloso con .gitignore; sin embargo, el archivo de exclusión local hace lo que necesito. ¡Gracias! - andersop

Supongo que el problema es que su árbol de trabajo es como:

a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore

... con el .gitignore tú describes. Esto te dará git status salida como:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
#    a-cache/
#    b-cache/

... if el index.html los archivos aún no se han agregado al repositorio. (Git ve que hay archivos no ignorados en los directorios de la caché, pero solo informa los directorios). Para solucionar esto, asegúrese de haber agregado y confirmado el index.html archivos:

git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"

... y tu git status entonces se verá así:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
nothing added to commit but untracked files present (use "git add" to track)

(Obviamente quieres comprometerte .gitignore también. Solo estaba siendo vago con este caso de prueba).

respondido 14 nov., 19:14

Probablemente do desea confirmar .gitignore especialmente porque es probable que desee realizar un seguimiento de los cambios, al igual que su equipo (si está trabajando con uno). Ver stackoverflow.com/a/767213/123033 - Dave Everitt

@Dave Everitt: Esa es exactamente la razón por la que dije: "Obviamente, también quieres cometer .gitignore". - marca longair

En Windows y Mac, si desea ignorar una carpeta llamada Flower_Data_Folder en el directorio actual, puede hacer lo siguiente:

echo Flower_Data_Folder >> .gitignore

Si es un archivo llamado data.txt:

echo data.txt >> .gitignore

Si es una ruta como "Data / passwords.txt"

echo "Data/passwords.txt" >> .gitignore. 

respondido 14 nov., 19:14

Tuve problemas similares. Trabajo en una cadena de herramientas de Windows con un repositorio compartido con los chicos de Linux, y ellos felizmente crean archivos con los mismos (excepto en el caso de los nombres) en una carpeta determinada.

El efecto es que puedo clonar el repositorio e inmediatamente tener docenas de archivos 'modificados' que, si me registrara, causarían estragos.

Tengo Windows configurado para que distinga entre mayúsculas y minúsculas y Git para no ignorar las mayúsculas y minúsculas, pero aún falla (aparentemente en las llamadas a la API de Win32).

Si ignoro los archivos, debo recordar no rastrear el archivo .gitignore.

Pero encontré una buena respuesta aquí:

http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html

respondido 14 nov., 19:14

El enlace parece estar roto (primero redirige a la versión 'https'): "Error de conexión segura. Se produjo un error durante una conexión a archive.robwilkerson.org. PR_END_OF_FILE_ERROR" - Pedro Mortensen

Solo crea .gitignore archivo en la carpeta de su proyecto Luego agregue el nombre de la carpeta en él, por ejemplo:

frontend/node_modules

Respondido 11 Feb 20, 23:02

Esto puede ser extremadamente obvio para algunos, pero lo entendí por las otras respuestas.

Hacer un archivo .gitignore en un directorio no hace nada por sí mismo. Tienes que abrir el .gitignore como un archivo de texto y escribir los archivos / directorios que quieres que ignore, cada uno en su propia línea.

así que cd al directorio del repositorio de Git

touch .gitignore
nano .gitignore

y luego escriba los nombres de los archivos o directorios que desea ignorar y sus extensiones si es relevante.

Además, .gitignore es un archivo oculto en algunos sistemas operativos (Mac, por ejemplo), por lo que necesita ls -a para verlo, no solo ls.

Respondido el 19 de diciembre de 20 a las 17:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.