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
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.
Ahora usaremos el comando git status –ignored para ver todos los archivos ignorados presentes en el directorio.
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.
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.
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.
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.
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.
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:
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:
Entonces, si usamos el comando git status –ignored, veremos todos los archivos .py en archivos ignorados.
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.
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.
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.
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 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.
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
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
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.
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.
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á.
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.
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.
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.
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.
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
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
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.
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.
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