Git
Última actualización
Última actualización
git es un software de control de versiones, un repositorio, pensado en mejorar la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando estas tienen un gran número de archivos de código fuente.
Fue escrito por Linus Torvalds en 2005 para desarrollar 𝗟𝗶𝗻𝘂𝘅 𝗸𝗲𝗿𝗻𝗲𝗹 , y otros desarrolladores del kernel contribuyeron a su desarrollo inicial.
Es una especie de base de datos capaz de guardar las modificaciones por las que ha pasado un archivo y efectuar acciones sobre este historial, como recuperar una versión antigua. Está ampliamente extendido en la comunidad de desarrolladores y es muy recomendable su uso al empezar un proyecto.
A parte de los dos entornos de local y remoto, Git tiene tres almacenamientos locales: un directorio de trabajo, un área de preparación y un repositorio local.
𝗪𝗼𝗿𝗸𝗶𝗻𝗴 𝗗𝗶𝗿𝗲𝗰𝘁𝗼𝗿𝘆 - Aquí es donde se trabaja y donde están los archivos (también llamado "untracked"). Todos los cambios de archivos aquí se marcarán y, si no se guardan en GIT, los perderá ya que GIT no reconoce esos archivos.
𝗦𝘁𝗮𝗴𝗶𝗻𝗴 𝗔𝗿𝗲𝗮 - Cuando guardes tus cambios con git add
, GIT comenzará a rastrear y guardar tus cambios con archivos. Estos cambios se almacenan en el directorio .git. Luego, los archivos se mueven del Working Directory a la Staging area. Esto te permite preparar una instantánea antes de enviarla al historial oficial.
𝗟𝗼𝗰𝗮𝗹 𝗥𝗲𝗽𝗼𝘀𝗶𝘁𝗼𝗿𝘆 - Es el área donde todo se guarda (confirma) en el directorio .git. Cuando quieras mover sus archivos del área de preparación al repositorio local, puede usar el comando git commit.
Después de esto, su área de preparación estará vacía. Si desea ver qué hay en el repositorio local, intente con git log
.
Algunos comandos básicos de 𝗚𝗜𝗧 son:
git clone
<url>
Para hacer una copia de trabajo local de un repositorio remoto que ya existe, usa git clone que copia y descarga el repositorio al local.
𝗴𝗶𝘁 𝗶𝗻𝗶𝘁 nuevo-proyecto
Cree un nuevo repositorio llamado nuevo-proyecto de git en el directorio donde se encuentre
𝗴𝗶𝘁 𝗯𝗿𝗮𝗻𝗰𝗵 nueva-rama
Si se deja el nombre vacío se lista todas las ramas, sino, crea una nueva rama del repositorio local llamado "nueva-rama"
git branch
-d nueva-rama
Borra la rama "nueva-rama", usa -D (en mayuscula) para forzar el borrado si esta tiene cambios sin guardar.
git branch
-m antigua-rama nueva-rama
Cambia el nombre de "antigua-rama" a "nueva-rama"
𝗴𝗶𝘁 𝗰𝗵𝗲𝗰𝗸𝗼𝘂𝘁 nueva-rama
Cambiar a la rama "nueva-rama"
𝗴𝗶𝘁 𝗰𝗵𝗲𝗰𝗸𝗼𝘂𝘁 -b nueva-rama
Crea y cambia a la rama "nueva-rama", combinación de branch y chekout
git checkout main
git merge
nueva-rama
Cambiar a la rama "main" o principal por defecto y fusionar la "nueva-rama" con esta
𝗴𝗶𝘁 𝗮𝗱𝗱 texto.txt
Agrega un nuevo archivo a la Staging area. Antes de que un archivo esté disponible para enviarse a un repositorio, el archivo debe agregarse al área de preparación. Si no es especifica el nombre se pasaran todos los archivos disponibles.
𝗴𝗶𝘁 𝗰𝗼𝗺𝗺𝗶𝘁 -m "Cambios principales"
Agrega cambios por etapas al repositorio local e incluye un mensaje con el parámetro "-m"
git fetch --all
Esto descarga una rama de otro repositorio, junto con todos los commits y archivos asociados. Sin embargo, no intenta integrar nada en el repositorio local. Esto permite inspeccionar los cambios antes de incorporarlos al proyecto.
𝗴𝗶𝘁 𝗽𝘂𝗹𝗹
Extrae el código de su repositorio remoto al directorio local. Pulling es la versión automatizada de git fetch. Obtiene una rama de un repositorio remoto y la fusiona inmediatamente con la rama actual.
git log
Permite revisar las revisiones anteriores de un proyecto. Ofrece una variedad de opciones de formato para mostrar instantáneas confirmadas.
𝗴𝗶𝘁 𝗽𝘂𝘀𝗵 --all
Pushing es exactamente lo opuesto a fetching. Permite mover una sucursal local a otro repositorio remoto, lo que facilita la publicación de contribuciones. Esto es similar al commit svn, pero en lugar de un único conjunto de cambios, envía una serie de commits.
𝗴𝗶𝘁 𝘀𝘁𝗮𝘁𝘂𝘀
Mostrar qué archivos están siendo rastreados (y no rastreados)
𝗴𝗶𝘁 𝗱𝗶𝗳𝗳
Mira la diferencia real en el código entre el Working Directory y la Staging area
Junto con los comandos GIT, puedes probar y usar algunos populares de herramientas de 𝗚𝗜𝗧 como son: GitHub Desktop, SourceTree, TortoiseGit, Git Extensions, GitKraken, SmartGit, Tower, etc.
En este ejemplo nos centraremos en distribuciones Ubuntu. Para la instalación sigue los siguientes pasos sencillos:
Actualizar el Índice de Paquetes: Antes de instalar cualquier nuevo paquete, es una buena práctica actualizar el índice de paquetes:
Instalar Git: Utiliza el siguiente comando para instalar Git:
Se te pedirá que ingreses tu contraseña de administrador para confirmar la instalación.
Verificar la Instalación: Puedes verificar que Git se haya instalado correctamente ejecutando el siguiente comando:
Esto debería mostrar la versión de Git que acabas de instalar.
Vamos a ver varios procesos conjuntos que nos podríamos encontrar con Git.
Para realizar esto usaremos mi repositorio de github de prueba:
Lo primero será clonar el repositorio completo (si aún no lo tienes):
Esto descargará todo el repositorio a tu máquina.
Navega a la carpeta del repositorio:
Si solo necesitamos un archivo y no el repositorio completo, es mejor usar alguna otra herramienta como curl
o wget
y en formato RAW. Por ejemplo, para descargar el archivo README.md
:
Si en el servidor no esta instalado python ni flask deberás instalarlos con:
Para ejecutar la aplicación usa:
Y accede a http://X.X.X.X:5000
Cuando actualizas un archivo en tu repositorio local, puedes enviarlo al repositorio remoto que es lo interesante de Git:
Asegúrate de estar en la rama correcta, por ejemplo:
Vamos a añadir una imagen a los archivos html para comprobar el cambio de estado:
Ahora vamos al HTML y añadimos esto en algún punto:
Vamos con la actualización del proyecto en el repositorio remoto:
Verificamos primero el estado del repositorio comprobando qué archivos han cambiado o si hay archivos nuevos:
Añadimos el archivo al área de preparación (staging area):
Si quieres añadir todos los cambios:
Puedes ver los cambios de los archivos del area de preparación con:
Antes de hacer un commit deberemos hacer login (obviammente) para poder modificar cambios en el repositorio remoto:
Usar un token de acceso personal (PAT): Si estás utilizando GitHub, GitLab o Bitbucket, ahora deberás usar un token de acceso personal (PAT) en lugar de tu contraseña para mayor seguridad. Para crear un token de acceso, sigue estos pasos en la plataforma correspondiente:
Asegurate de darle permisos de modificación de repositorio y quédate con él.
Crea un commit con un mensaje:
Revisa los commits hechos:
Sube los cambios al repositorio remoto:
Ahora te pedirá el usuario y la password, para ello usa el token personal creado.
Podemos encontrarnos con el caso que el repositorio clonado no sea el nuestro principal por lo que en ese caso tenemos que realizar otra configuración:
Cuando clonas un repositorio, automáticamente se configura un remoto llamado origin
, que apunta al repositorio original del que clonaste.
Para asegurarte de que está correctamente configurado, usa:
El resultado debería mostrar algo como:
En este caso, ves que el repositorio remoto original es el del proyecto clonado. Si quieres subir tus cambios a tu propio repositorio en GitHub, necesitas cambiar o agregar un nuevo remoto:
Opción A: Cambiar el remoto origin
Si deseas usar tu propio repositorio como remoto, actualiza el URL del remoto origin
para que apunte a tu repositorio en GitHub.
Primero, copia la URL de tu repositorio y cambia el remoto:
Ahora verifica:
Deberías ver tu repositorio en lugar del original.
Opción B: Agregar un nuevo remoto
Si prefieres mantener el remoto original (origin
) pero subir los cambios a tu propio repositorio, añade un nuevo remoto con un nombre diferente, como mi-repo
:
Verifica que se haya añadido correctamente:
Ahora deberías ver algo como:
Primero, asegúrate de que los cambios estén confirmados, verifica que todos los cambios estén preparados y confirmados:
Añade los cambios al área de preparación:
Confirma los cambios:
A continuación, si cambiaste origin
para que apunte a tu propio repositorio:
O bien si añadiste un nuevo remoto (mi-repo
):
Si la rama main
(o la rama en la que estás trabajando) no existe en tu repositorio de GitHub, o si no está vinculada con el remoto, puedes configurarla con:
O:
Esto asegura que futuras ejecuciones de git push
o git pull
funcionen sin que tengas que especificar el remoto y la rama.
Ya por ultimo, deberías (Una vez subidos los cambios) ir al repositorio en GitHub y verificar que los archivos actualizados se hayan cargado correctamente.
Crear una nueva rama te permite trabajar en una copia del proyecto sin afectar la rama principal.
Verifica las ramas existentes:
Crear una nueva rama:
Cambiar a la nueva rama:
O, si estás usando una versión moderna de Git, puedes crear y cambiar a la nueva rama directamente:
Ahora simplemente cambiamos archivos de proyecto, por ejemplo cambiando el titulo y la imagen por un tigre.
Subir la nueva rama al repositorio remoto:
Cuando una rama está lista para ser integrada en otra (por ejemplo, unir tigre-sumatra
con main
):
Antes de hacer un merge
, puedes revisar qué cambios se introducirán:
Cambia a la rama base donde quieres unir los cambios:
Une la rama en la que trabajaste con la rama base:
Resolver conflictos (si los hay):
Si Git detecta conflictos en archivos, mostrará mensajes indicando los conflictos.
Abre los archivos conflictivos y busca marcas como estas:
Edita el archivo para resolver el conflicto y elimina las marcas.
Añade los archivos con conflictos resueltos:
Completa el merge:
Sube los cambios al repositorio remoto:
A continuación te dejo un enlace a un juego que te puede ayudar a coger experiencia con GIT:
GitHub: