it-swarm.dev

Ignorando directorios en repositorios Git en Windows

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

913
sf.

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

dir_to_ignore/

Más información aquí .

1356
stew

Por defecto, el Explorador de Windows mostrará .gitignore cuando en realidad el nombre del archivo es .gitignore.txt

Git no utilizará .gitignore.txt

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

Solución de línea de comando no:

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

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

  1. .gitignore

    • Colocar el archivo .gitignore en la raíz de su repositorio junto a la carpeta .git (en Windows asegúrese de que vea la verdadera extensión del archivo y luego haga .gitignore. (con el punto al final para hacer la extensión del archivo vacía))
    • Realice la configuración global ~/.gitignore_global y ejecute git config --global core.excludesfile ~/.gitignore_global para agregar esto a su configuración git

    nota: los archivos rastreados antes se pueden desmarcar ejecutando git rm --cached filename

  2. Repo exclude - 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 aquí

[actualizado] Para hacer excepciones en la lista de archivos ignorados, vea esta pregunta .

91
Vairis

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

una solución fue ir a la consola de comandos y crear un nuevo archivo usando "editar"

43
sf.

para indicar a GIT que ignore ciertos archivos o carpetas, debe crear el archivo .gitignore.

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 que cree un archivo de texto vacío y vaya al comando Solicitar y cambie 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 puedes usar comodines como este *.txt

espero que te responda tu pregunta

41
Mahes

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 ignorará todo el contenido del repositorio. Pero .gitignore se incluirá en su repositorio.

$ git add path/to/folder/.gitignore

Si agrega una carpeta vacía, recibirá 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, usa "-f" para forzar agregar:

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

En Windows hay una captura extra con barras diagonales. Excluyendo un solo directorio en .gitignore con

dir_to_exclude /

posiblemente funcione, pero excluyendo todos los directorios con

/

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

Para excluir todos los directorios mejor uso:

** /

Dos asteriscos consecutivos significan los contenidos del directorio.

14
wortwart

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

14
Si3

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,

Ejemplo de sistema

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

Objetivo

  • ignorar los contenidos de/dirB /

Nivel superior .gitignore (/root/.gitignore)

  • Aquí es donde va su información gitignore estándar

Directorio ignorado .gitignore (/root/dirB.gitignore)

  • ¡Este archivo solo se lee como '*' y el directorio se ignora por completo, en sí mismo y en todos los archivos!

y es así de simple :)

9
J-Dizzle

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

*
!.gitignore

Funciona para mí y los simples.

7

He tenido algunos problemas para que git recoja el archivo .gitignore en Windows. El archivo $ GIT_DIR/info/exclude siempre parece funcionar sin embargo. La desventaja de este enfoque, sin embargo, es que los archivos en el directorio $ GIT_DIR no se incluyen en el registro, y por lo tanto no se comparten.

(p.s. $ GIT_DIR suele ser la carpeta oculta llamada .git)

7
Jason

Cuando todo lo demás falla intenta editar el archivo

/.git/info/exclude

y agregando los directorios que desea al final del archivo, como este:

# 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 "elementos" y "compilé" a la lista de archivos y directorios para ignorar.

6
Xedret

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

**/build/output/Debug/
6
Eat at Joes

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 que describe. Esto te dará una salida de git status como:

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

... si los archivos index.html aún no se han agregado al repositorio. (git ve que hay archivos sin identificar en los directorios del caché, pero solo informa los directorios). Para solucionar esto, asegúrese de haber agregado y confirmado los archivos index.html:

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

... y su git status 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, usted también quiere cometer .gitignore, yo solo estaba siendo perezoso con este caso de prueba).

5
Mark Longair

En Unix:

touch .gitignore

En Windows:

echo > .gitignore

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

Luego simplemente agregue información a este archivo .gitignore (usando Notepad ++ por ejemplo) qué archivos o carpetas deben ignorarse. Guarda tus cambios. Eso es :)

Más información: https://www.atlassian.com/git/tutorials/saving-changes/gitignore

4
fvolodimir

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

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 "Datos/contraseñas.txt" >> .gitignore.

3
Olusola Omosola

Tuve problemas similares, trabajo en una cadena de herramientas de Windows con un repositorio compartido con los chicos de Linux, crearon archivos con los mismos nombres [excepto para el caso] en una carpeta determinada.

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

Tengo las ventanas configuradas para que distingan entre mayúsculas y minúsculas y git para no ignorar las mayúsculas, pero sigue fallando (aparentemente en las llamadas de la API de Win32).

Si gitignore los archivos, entonces 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

Chris

1
Chris Aaaaa