Pregunta

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

¿Fue útil?

Solución

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 inclinada adjunta):

dir_to_ignore/

Más información aquí .

Otros consejos

Por defecto, Windows Explorer mostrará .gitignore cuando de hecho 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 cree que es un archivo de tipo gitignore sin nombre.

Solución sin línea de comando:

You can rename a file to ".gitignore." and it will create ".gitignore"

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

  1. .gitignore

    • Colocando el archivo .gitignore en la raíz de su repositorio además de la carpeta .git (en Windows asegúrese de que vea la extensión del archivo verdadero y luego haga .gitignore. (con el punto al final para hacer una extensión de archivo vacía))
    • Realizando la configuración global ~ / .gitignore_global y ejecutando git config --global core.excludesfile ~ / .gitignore_global para agregar esto a su git config

    nota: los archivos rastreados antes pueden rastrearse 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 se comprometen, por lo que no son vistos por otros usuarios más información aquí

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

Tuve algunos problemas al crear un archivo en Windows Explorer con a. al principio.

una solución consistía en ir al shell de comandos y crear un nuevo archivo usando " edit "

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

pero en Windows Explorer tiene que 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 e 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

espero que responda tu pregunta

Si desea mantener una carpeta y no los archivos que contiene, simplemente coloque un " .gitignore " archivo 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, use " -f " para forzar agregar:

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

En Windows hay una trampa adicional con barras. Excluir un único directorio en .gitignore con

  

dir_to_exclude /

posiblemente funcionará, 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 mejor el uso de todos los directorios:

  

** /

Dos asteriscos consecutivos significan el contenido del directorio.

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.

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 .gitignore (/root/.gitignore)

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

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 :)

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

**/build/output/Debug/

He tenido algunos problemas para que git recoja el archivo .gitignore en Windows. Sin embargo, el archivo $ GIT_DIR / info / exclude siempre parece funcionar. Sin embargo, la desventaja de este enfoque 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)

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

*
!.gitignore

Funciona para mí y simple.

Cuando todo lo demás falla intente editar el archivo

  

/.git/info/exclude

y agregue los directorios que desee al final del archivo, de esta manera:

# 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 a ignorar.

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 le 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/

... si los archivos index.html aún no se han agregado al repositorio. (git ve que hay archivos no ignorados en los directorios de 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 confirmar .gitignore , solo estaba siendo flojo con este caso de prueba).

En Unix:

touch .gitignore

En Windows:

echo > .gitignore

Estos comandos ejecutados en una 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 todo :)

Más información: https://www.atlassian.com/git/ tutoriales / guardar cambios / gitignore

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.

Tuve problemas similares, trabajo en una cadena de herramientas de Windows con un repositorio compartido con linux guys, felizmente crean archivos con los mismos [excepto los casos] nombres 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 Windows configurado en mayúsculas y minúsculas y git para no ignorar mayúsculas y minúsculas, pero todavía falla (aparentemente en las llamadas de la API 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-rastreado-archivos / index.html

Chris

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top