Ignorando archivos y carpetas en Git

Git es un sistema de control de versiones distribuido gratuito y de código abierto diseñado para manejar todo, desde proyectos pequeños hasta proyectos muy grandes, con rapidez y eficiencia. Git se basa en el desarrollo distribuido de software donde más de un desarrollador puede tener acceso al código fuente de una aplicación específica y puede modificar los cambios que pueden ver otros desarrolladores. Entonces, en este artículo, cubriremos varios conceptos relacionados con ignorar archivos y carpetas en git. Comenzaremos el artículo aprendiendo cómo crear el archivo .gitignore y cómo funciona.

Creando .gitignore y conociendo sus funcionalidades 

Crear archivo .gitignore

Usando el estado de git para mostrar el estado de los archivos

Ahora podemos ver que hay muchos archivos que están en archivos sin seguimiento y algunos de ellos son archivos que ya se están organizando, pero no hay archivos que se estén ignorando. Suena interesante, eso significa que también hay archivos ignorados en git. Entonces, para ignorar un archivo en git, usamos un . gitignore dentro de ese archivo, puede mencionar si desea que se ignore un archivo en particular o un archivo que termine con una extensión específica. Entonces, aquí en este archivo, podemos ver que se menciona *.txt, lo que significa que todos los archivos .txt deben ignorarse en este directorio.

Agregar qué archivos no deben agregarse en …gitignore

Ahora usaremos el comando git status –ignored para ver todos los archivos ignorados presentes en el directorio. 

Uso de git status –ignored para ver el estado de los archivos ignorados

Excepciones en un archivo.gitignore

Entonces, ¿cómo funcionan las excepciones en el archivo .gitignore? Podemos tomar el ejemplo de nuestro *.txt que escribimos en nuestro archivo .gitignore, lo que significa que todos los archivos .txt deben ignorarse. Además, podemos escribir !file_name.txt , lo que significa que el archivo en particular no debe ignorarse. Así que aquí podemos ver cuando se mencionó *.txt en el archivo.gitignore, todos los archivos.txt se ignoraron en el directorio.

Editando el archivo .gitignore con !file_name.txt

Al agregar ! file_name.txt en el archivo .gitignore después de agregar esto, podemos ver que el archivo no está en los archivos ignorados ahora y aquí puede ver que el nombre del archivo es un.txt que anteriormente venía en los archivos ignorados y ahora podemos ver que ahora el archivo está en archivos sin seguimiento.

Ver los cambios después de agregar este !a.txt en el archivo .gitignore

Entonces, si hay algunos archivos .txt en alguna carpeta, esa carpeta se ignorará y no podemos volver a incluir fácilmente los archivos de esa carpeta, por lo que hay un procedimiento para volver a incluir todos esos archivos de esa carpeta porque aquí, según .git, ignora todos los archivos *. Los archivos txt deben ignorarse excepto a.txt.

Usando el estado de git – ignorado

Aquí puede ver que la carpeta de secretos está en los archivos ignorados porque, según .gitignore, todos los archivos * .txt deben ignorarse. Entonces, para volver a incluir todos los archivos *.txt de la carpeta de secretos, primero debemos volver a incluir la carpeta de secretos escribiendo !nombre_carpeta en .gitignore aquí nombre_carpeta es secretos y luego tenemos que ignorar todos los archivos presentes en la carpeta secretos escribiendo secretos /* en .gitignore y luego escriba !secrets/*.txt para volver a incluir todos los archivos .txt de la carpeta de secretos para eliminar la carpeta y volver a incluir todos los archivos .txt en la carpeta de archivos ignorados. 

Edición del archivo .gitignore

Usando el estado de git: ignorado para ver si la carpeta se elimina de los archivos ignorados o no

Ahora, si nuestro caso de uso es eliminar aquellos archivos cuyos nombres de archivo comienzan con ! en el archivo .gitignore y luego agregue uno más. o agregue \ al frente de su nombre de archivo o también puede eliminar una carpeta por este que tiene algunos archivos que no quieren que git tenga una pista sobre ellos. Al usar estas excepciones en el archivo a.gitignore, moverá estos archivos y carpetas a los archivos ignorados.

Editando .gitignore

Usar el estado de git: ignorado para ver si los archivos están en archivos ignorados o no

Un archivo .gitignore global

Entonces, si nuestro caso de uso es que si queremos que git ignore archivos específicos en todos los repositorios, entonces podemos crear un .gitignore global en cualquiera de los repositorios y hacerlo global usando el siguiente comando: 

git config --global core.excludesfile path_of_global_gitignore_file

Aquí puede ver que la ruta debe estar completa, es decir, name_of_the_drive/folder_name/.gitignore para evitar errores como esta advertencia: no se puede acceder al permiso denegado fatal: no se puede usar como un archivo de exclusión. Ahora git usará esto además del archivo .gitignore de cada repositorio. Así que veamos la sintaxis del comando:

Mostrando la sintaxis del comando: git config –global core.excludes file path_of_global_gitignore_file

Entonces, si editamos el archivo .gitignore global y escribimos *.py, ignorará todos los archivos *.py presentes en nuestro repositorio. Ahora veamos cómo funciona esto:

Edición del archivo .gitignore global

Entonces, si usamos el comando git status –ignored, veremos todos los archivos .py en archivos ignorados. 

Usando el estado de git – ignorado

Entonces, si ahora incluimos todos estos archivos *.py en el archivo local .gitignore de nuestro repositorio, ¿qué sucederá porque nuestro archivo global .gitignore ignora todos los archivos .py? Ahora, la pregunta aquí es quién tendrá la prioridad, por lo que la respuesta a esto es que nuestro archivo .gitignore local tiene prioridad siempre que haya un archivo que el archivo .gitignore global ignore pero que esté incluido en el archivo .gitignore local. Entonces escribiremos !*.py en nuestro local. El archivo .gitignore incluirá todos los archivos .py y no los pondrá en archivos ignorados.

Edición del archivo .gitignore local

Entonces, ahora podemos ver que todos los archivos py ahora están en archivos sin seguimiento y no hay archivos py que estén en archivos ignorados.

Usando el comando git status –ignored para ver si los archivos py se eliminan de los archivos ignorados o no

Ignora todos los archivos que ya se han enviado a un repositorio de Git

Entonces, ahora, si queremos un archivo que ya se ha enviado al repositorio de git y ahora queremos que git deje de rastrearlo para ese tipo de caso de uso, podemos eliminarlo usando el siguiente comando:

git rm --cached file

Esto eliminará el archivo del repositorio y evitará que Git rastree cualquier otro cambio. La opción –cached se asegurará de que el archivo no se elimine físicamente. Los contenidos agregados previamente de este archivo seguirán siendo visibles, pero tenga en cuenta que si alguien más lo extrae del repositorio después de eliminar el archivo, su copia se eliminará físicamente. 

Antes de usar git rm: estado en caché del archivo

Después de usar git rm –archivo en caché  

Puede hacer que git simule que la versión del árbol de trabajo del archivo está actualizada, ignorando así los cambios en él con la opción skip-worktree usando el comando.

git update-index --skip-worktree file_name

Aquí podemos ver que readme.md está modificado

Aquí podemos ver que después de usar el comando anterior, git ignora los cambios realizados en el archivo readme.md

Aquí podemos ver que al usar este comando anterior, git no puede rastrear más cambios en el archivo readme.md e ignorar cualquier cambio que se esté realizando en el archivo readme.md. Ahora, para tener un seguimiento de los cambios en el archivo readme.md, podemos usar el comando git update-index –no-skip-worktree file_name.

Usando el comando git update-index –no-skip-worktree file_name

Ahora podemos ver que al usar el estado de git podemos ver que readme.md se está modificando y algunos cambios deben organizarse para la confirmación. Ahora, si desea forzar a git a ignorar los cambios realizados en un archivo, podemos usar el comando.

git update-index --assume-unchanged file_name 

Usando el comando anterior para que git no ignore el archivo

Ahora, si queremos que git no ignore el archivo y vuelva a ocuparse de él. Para ello utilizaremos el comando 

git update-index --no-assume-unchanged file_name 

Usando el comando anterior para que git no ignore el archivo

Ignorar archivos localmente sin cometer reglas de ignorar

Si desea ignorar ciertos archivos en un repositorio localmente y no hacer que el archivo forme parte de ningún repositorio, editaremos el .git/info/exclude dentro de su repositorio. Aquí ignoraremos un archivo, digamos rock.py, y ahora podemos ver que antes de editar el archivo .git/info/exclude, git nos muestra el archivo en archivos sin seguimiento.

Antes de editar el archivo .git/info/exclude

Editando el archivo .git/info/exclude

Usando el estado de git – ignorado para ver el estado de rock.py

Ahora podemos ver que rock.py está ahora en archivos ignorados.
 

Ignorar un archivo en cualquier directorio 

Si queremos ignorar un archivo en cualquier directorio, solo tenemos que escribir su nombre en el archivo . gitignore ya sea global o local o puede ser su .git/info/exclude del repositorio según su caso de uso. Si desea que en su repositorio en particular solo se ignore un archivo en particular en un directorio específico, puede mencionar el nombre de ese archivo en el archivo local.gitignore y si desea que todos los repositorios ignoren el archivo, puede escribir el nombre de ese archivo en .gitignore global, entonces todos los repositorios ignorarían el archivo.

Mencionando el nombre del archivo .gitignore

Usando el estado de git – ignorado

Aquí puede ver que el archivo ahora está en archivos ignorados y las carpetas que contenían ese archivo también se ignoran. Ahora, si desea ignorar un determinado archivo en una carpeta específica, solo entonces podemos editar el .gitignore así: mainfolder_name/**/file_name . Aquí ** denota subdirectorios. El significado de mainfolder_name/**/file_name esta línea es solo el archivo contenido en esta carpeta o sus subdirectorios serán ignorados. Pero si el archivo está en alguna otra ubicación del repositorio con el mismo nombre, eso no se ignorará.

Editando el .gitignore

Usando el estado de git – ignorado

Ahora podemos ver que el archivo cars.cpp creado en la carpeta principal está en los archivos sin seguimiento y el archivo cars.cpp que está presente en la carpeta testing y sus subdirectorios se ignoran porque en el archivo .gitignore está escrito testing/ **/cars.cpp , lo que significa que todos los archivos con el nombre cars.cpp deben ignorarse en la carpeta de prueba y sus subdirectorios o lo que podemos hacer es crear un archivo .gitignore local en la carpeta donde queremos ignorar el archivo. Ahora lo que estamos haciendo es crear un archivo .gitignore local en la carpeta donde vamos a ignorar el archivo. Entonces, lo que hemos hecho es haber borrado esta línea testing/**/cars.cpp de nuestro archivo .gitignore local para que podamos ver el efecto del archivo .gitignore presente en nuestra carpeta testing que acabamos de crear.

Editando el .gitignore local

Usando el estado de git: comando ignorado

Ahora puede ver que al usar el comando git status –ignored estamos viendo que cars.cpp de la carpeta testing y sus subdirectorios son ignorados. 

Plantillas .gitignore precargadas

Crear una carpeta vacía

No es posible agregar y confirmar una carpeta vacía en el git, por lo que para lograr esto, tenemos dos métodos:

Método uno: .gitkeep  

Entonces, para rastrear una carpeta vacía en git, crearemos una carpeta vacía dentro del repositorio y en esa carpeta crearemos un archivo .gitkeep vacío que registrará la carpeta en git y podremos rastrear la carpeta vacía.

Comprobando el estado de la carpeta vacía gitisfun sin un .gitkeep

Así que ahora podemos ver que la carpeta gitisfun no tiene ningún archivo .gitkeep y sin ningún archivo .gitkeep no está siendo rastreado por git. Entonces, creemos un archivo .gitkeep en una carpeta vacía para que podamos rastrear una carpeta vacía en git.

Creando un archivo .gitkeep en la carpeta vacía

Agregar la carpeta vacía en el área de ensayo

Así que ahora podemos ver que git está rastreando la carpeta vacía. Hay un método más por el cual podemos rastrear la carpeta vacía en git.

Método dos: dummy.txt

Entonces, para rastrear una carpeta vacía en git usando dummy.txt, crearemos una carpeta vacía en la que crearemos un archivo dummy.txt, y en eso, puede insertar cualquier mensaje divertido que desee y ahora, después de crear este dummy.txt archivo en la carpeta vacía, podremos agregar la carpeta vacía en el área de ensayo.

Sin dummy.txt, git no rastrea la carpeta vacía

Se creó dummy.txt en la carpeta vacía y ahora podemos ver que git está rastreando la carpeta vacía 

Aquí el nombre de la carpeta vacía es batman. Estos son los dos métodos por los cuales podemos rastrear una carpeta vacía en git. 

Encontrar archivos ignorados por .gitignore

Entonces, ahora, si desea ver todos los archivos ignorados por git en su repositorio o cualquiera de los directorios presentes en el repositorio, podemos usar el siguiente comando:

git status --ignored

Usando el estado de git: comando ignorado

Entonces, ahora, si desea enumerar archivos ignorados recursivamente en directorios, usaremos un parámetro adicional   –untracked-files=all , y el comando sería:

git status --ignored --untracked-files=all

Usando el estado de git –ignorado –archivos no rastreados=todos

Entonces ahora podemos ver que también está enumerando todos los archivos ignorados recursivamente en los directorios.

Ignorar cambios en archivos rastreados

Entonces, si está pensando en ignorar los cambios en los archivos rastreados, entonces podría pensar por qué no usar .gitignore o .git/info/exclude y solo mencionar el nombre del archivo que queremos ignorar pero .gitignore y .git/ info/exclude solo funciona para ignorar archivos sin seguimiento. Entonces, para ignorar un archivo rastreado, usamos el siguiente comando git update-index –skip-worktree file_name. Entonces, aquí puede ver que el archivo try.txt que está en los archivos rastreados se modifica, pero ahora, después de aplicar el comando: git update-index –skip-worktree file_name cualquier cambio realizado en try.txt está siendo ignorado por git debido a el comando que usamos.

Modificando el archivo try.txt

Usando el comando git update-index –skip-worktree file_name

Entonces, ahora podemos ver que después de aplicar el comando git update-index –skip-worktree file_name, el archivo rastreado se ignora y ahora, si desea revertir esto, podemos usar el siguiente comando: git update-index –no-skip-worktree file_name por lo que este comando volverá a hacer que el archivo sea rastreado por git.

Usando el comando git update-index –no-skip-worktree file_name

También podemos usar el comando git update-index –assume-unchanged file_name en alternativa a git update-index –skip-worktree file_name ambos funcionan igual y en alternativa al comando git update-index –no-skip-worktree que podemos usar  Comando git update-index –no-assume-unchanged file_name .

Publicación traducida automáticamente

Artículo escrito por ankitmahajan852 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Categories Git

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *