¿Cómo puedo ignorar directorios o carpetas en Git usando msysgit en Windows?
.gitkeep
) para indicar un directorio que debe mantenerse
/
al final lo que lo hace saber que es un directorio que debe ignorar?
¿Cómo puedo ignorar directorios o carpetas en Git usando msysgit en Windows?
.gitkeep
) para indicar un directorio que debe mantenerse
/
al final lo que lo hace saber que es un directorio que debe ignorar?
Respuestas:
Cree un archivo nombrado .gitignore
en el directorio de su proyecto. Omita los directorios ingresando el nombre del directorio en el archivo (con una barra inclinada adjunta):
dir_to_ignore/
Más información está aquí .
De forma predeterminada, el Explorador de Windows se mostrará .gitignore
cuando, de hecho, el nombre del archivo sea .gitignore.txt
.
Git no usará .gitignore.txt
Y no puede cambiar el nombre del archivo .gitignore
, porque Windows Explorer cree que es un archivo de tipo gitignore sin nombre.
Solución sin línea de comando:
Puede cambiar el nombre de un archivo a ".gitignore". , y creará ".gitignore"
".gitignore"
y lo guarda sin agregar automáticamente una extensión.
".gitignore."
- Este es un gran truco! Siempre tuve problemas con .htaccess
...
Parece que para ignorar archivos y directorios hay dos formas principales:
.gitignore
.gitignore
archivo en la raíz de su repositorio además de la .git
carpeta (en Windows, asegúrese de ver la extensión de archivo verdadera y luego haga .gitignore.
(con el punto al final para hacer una extensión de archivo vacía))~/.gitignore_global
y ejecutarla git config --global core.excludesfile ~/.gitignore_global
para agregar esto a su configuración de GitNota: los archivos rastreados antes pueden rastrearse ejecutando git rm --cached filename
Exclusión de repositorio : para archivos locales que no necesitan compartirse, simplemente agregue el patrón de archivo o el directorio al archivo .git/info/exclude
. Estas reglas no están comprometidas, por lo que no son vistas por otros usuarios . Más información está aquí .
Para hacer excepciones en la lista de archivos ignorados, vea esta pregunta .
git rm --cached <filename>
. Absolutamente crítico para los repos que existían ANTES de crear el.gitignore
Tuve algunos problemas al crear un archivo en el Explorador de Windows con un .
al principio.
Una solución alternativa era entrar en el shell de comandos y crear un nuevo archivo usando "editar".
.
al final para que el explorador deje de pensar que .gitignore
es la extensión. Luego, en la entrada, ese punto final sin extensión solo se come y te queda .gitignore
TL; DR: intenta nombrarlo .gitignore.
=> terminas con.gitignore
Para indicarle a Git que ignore ciertos archivos o carpetas, debe crear el .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 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 utilizar comodines como este: *.txt
.
type nul > .gitignore
para crear un archivo vacío
.gitignore.
cuando las extensiones de archivo no estén ocultas en su explorador de Windows
Si desea mantener una carpeta y no los archivos que contiene, 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, 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 la adición:
$ git add path/to/folder/.gitignore -f
En Windows hay una trampa adicional con barras. Excluyendo un solo 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 diagonal inversa (como my\ file.txt
) y Git para Windows no distingue entre /
y \
.
Para excluir todos los directorios, mejor uso:
** /
Dos asteriscos consecutivos significan el contenido del directorio.
También en su \.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.
En caso de que necesite excluir subcarpetas, puede usar el **
comodín para excluir cualquier nivel de subdirectorio.
**/build/output/Debug/
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
Nivel superior .gitignore (/root/.gitignore)
Directorio ignorado .gitignore (/root/dirB.gitignore)
Y es así de simple :)
Cuando todo lo demás falla, intente editar el archivo
/.git/info/exclude
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 "compiladas" a la lista de archivos y directorios para ignorar.
Puede crear el archivo ".gitignore" con el contenido:
*
!.gitignore
Esto funciona para mi.
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 simplemente agregue información a este .gitignore
archivo (usando Notepad ++, por ejemplo) qué archivos o carpetas deben ignorarse. Guarda tus cambios. Eso es :)
Más información: .gitignore
He tenido algunos problemas para que Git recoja el .gitignore
archivo en Windows. Sin $GIT_DIR/info/exclude
embargo, el archivo siempre parece funcionar.
Sin embargo, la desventaja de este enfoque es que los archivos en el $GIT_DIR
directorio no se incluyen en el registro y, por lo tanto, no se comparten.
ps
$GIT_DIR
es generalmente la carpeta oculta llamada.git
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 lo .gitignore
que describes. Esto te dará git status
resultados 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 index.html
archivos 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 index.html
archivos:
git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"
... y tu git status
voluntad 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 comprometerse .gitignore
. Solo estaba siendo flojo con este caso de prueba).
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.
Tuve problemas similares. Trabajo en una cadena de herramientas de Windows con un repositorio compartido con chicos de Linux, y felizmente crean archivos con los mismos nombres (excepto los casos) 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 para mayúsculas y minúsculas y Git para no ignorar mayúsculas y minúsculas, pero todavía falla (aparentemente en las llamadas a 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-tracked-files/index.html
Simplemente cree el .gitignore
archivo en la carpeta de su proyecto y luego agregue el nombre de la carpeta en él, por ejemplo:
frontend/node_modules