Git es un software que se utiliza para Control de versiones. Es gratis y de código abierto.
Ahora, comprendamos qué es el Control de versiones.
Control de versiones es la gestión de cambios en documentos, programas informáticos, sitios web grandes y otra recopilación de información.
- ¿Cuáles son algunos de los beneficios de los errores de software?
- ¿Qué es HashCache?
- ¿A los ex CEOs a menudo les resulta más difícil obtener puestos ordinarios (como los de ingeniería de software)?
- ¿Cuál es la diferencia entre TI e ingeniería de software?
- ¿Cómo desarrollaron los equipos el software antes del surgimiento de Scrum y Kanban?
Hay dos tipos de VCS:
- Sistema de control de versiones centralizado (CVCS)
- Sistema distribuido de control de versiones (DVCS)
VCS centralizado
El sistema de control de versiones centralizado (CVCS) utiliza un servidor central para almacenar todos los archivos y permite la colaboración en equipo. Funciona en un único repositorio al que los usuarios pueden acceder directamente a un servidor central.
Consulte el diagrama a continuación para tener una mejor idea de CVCS:
El repositorio en el diagrama anterior indica un servidor central que podría ser local o remoto que está conectado directamente a cada una de las estaciones de trabajo del programador.
Cada programador puede extraer o actualizar sus estaciones de trabajo con los datos presentes en el repositorio o puede realizar cambios en los datos o confirmar en el repositorio. Cada operación se realiza directamente en el repositorio.
Aunque parece bastante conveniente mantener un único repositorio, tiene algunos inconvenientes importantes. Algunos de ellos son:
- No está disponible localmente; lo que significa que siempre debe estar conectado a una red para realizar cualquier acción.
- Como todo está centralizado, en cualquier caso, el servidor central se bloquea o se daña, lo que provocará la pérdida de todos los datos del proyecto.
Esto es cuando Distributed VCS viene al rescate.
VCS distribuido
Estos sistemas no dependen necesariamente de un servidor central para almacenar todas las versiones de un archivo de proyecto.
En Distributed VCS, cada contribuyente tiene una copia local o “clon” del repositorio principal, es decir, todos mantienen un repositorio local propio que contiene todos los archivos y metadatos presentes en el repositorio principal.
Lo entenderá mejor al consultar el diagrama a continuación:
Como puede ver en el diagrama anterior, cada programador mantiene un repositorio local por sí mismo, que en realidad es la copia o clonación del repositorio central en su disco duro. Pueden confirmar y actualizar su repositorio local sin ninguna interferencia.
Pueden actualizar sus repositorios locales con nuevos datos del servidor central mediante una operación llamada ” pull ” y afectar los cambios en el repositorio principal mediante una operación llamada ” push ” desde su repositorio local.
El acto de clonar un repositorio completo en su estación de trabajo para obtener un repositorio local le brinda las siguientes ventajas:
- Todas las operaciones (excepto push & pull) son muy rápidas porque la herramienta solo necesita acceder al disco duro, no a un servidor remoto. Por lo tanto, no siempre necesita una conexión a Internet.
- La confirmación de nuevos conjuntos de cambios se puede hacer localmente sin manipular los datos en el repositorio principal. Una vez que tenga un grupo de conjuntos de cambios listos, puede empujarlos todos a la vez.
- Dado que cada contribuyente tiene una copia completa del repositorio del proyecto, pueden compartir los cambios entre ellos si desean obtener algunos comentarios antes de afectar los cambios en el repositorio principal.
- Si el servidor central se bloquea en algún momento, los datos perdidos se pueden recuperar fácilmente de cualquiera de los repositorios locales del contribuyente.
Git es un DVCS.
Esto principalmente cubre sus dos preguntas más o menos. Ahora, déjame decirte lo fácil que es usar Git.
Algunas de las operaciones básicas en Git son:
- Inicializar
- Añadir
- Cometer
- Halar
- empujar
Algunas operaciones avanzadas de Git son:
- Derivación
- Fusionando
- Rebasando
Permítame primero darle una breve idea sobre cómo funcionan estas operaciones con los repositorios de Git. Echa un vistazo a la arquitectura de Git a continuación:
Si comprende bien el diagrama anterior, pero si no lo hace, no necesita preocuparse, explicaré estas operaciones en este Tutorial de Git una por una. Comencemos con las operaciones básicas.
Primero debe instalar Git en su sistema. Si necesita ayuda con la instalación, haga clic aquí .
En este tutorial de Git, le mostraré los comandos y las operaciones con Git Bash. Git Bash es una interfaz de línea de comandos de solo texto para usar Git en Windows que proporciona funciones para ejecutar scripts automatizados.
Después de instalar Git en su sistema Windows, simplemente abra su carpeta / directorio donde desea almacenar todos sus archivos de proyecto; Haga clic derecho y seleccione ‘ Git Bash aquí ‘.
Esto abrirá la terminal de Git Bash donde puede ingresar comandos para realizar varias operaciones de Git.
Ahora, la siguiente tarea es inicializar su repositorio.
Inicializar
Para hacer eso, usamos el comando git init. Consulte la siguiente captura de pantalla.
git init crea un repositorio Git vacío o reinicializa uno existente. Básicamente crea un directorio .git con subdirectorios y archivos de plantilla. Ejecutar un git init en un repositorio existente no sobrescribirá las cosas que ya están allí. Más bien recoge las plantillas recién agregadas.
Ahora que mi repositorio está inicializado, permítame crear algunos archivos en el directorio / repositorio. Por ejemplo, he creado dos archivos de texto, a saber, edureka1.txt y edureka2.txt .
Veamos si estos archivos están en mi índice o no usan el comando git status . El índice contiene una instantánea del contenido del árbol / directorio de trabajo, y esta instantánea se toma como el contenido para el próximo cambio que se realizará en el repositorio local.
Estado de Git
El comando git status enumera todos los archivos modificados que están listos para agregarse al repositorio local.
Escribamos el comando para ver qué sucede:
Esto muestra que tengo dos archivos que aún no se han agregado al índice. Esto significa que no puedo confirmar los cambios con estos archivos a menos que los haya agregado explícitamente en el índice.
Añadir
Este comando actualiza el índice utilizando el contenido actual que se encuentra en el árbol de trabajo y luego prepara el contenido en el área de preparación para la próxima confirmación.
Por lo tanto, después de realizar cambios en el árbol de trabajo y antes de ejecutar el comando commit , debe usar el comando add para agregar cualquier archivo nuevo o modificado al índice. Para eso, use los siguientes comandos:
git add
o
git add
Déjame demostrarte el git add para ti para que puedas entenderlo mejor.
He creado dos archivos más edureka3.txt y edureka4.txt . Agreguemos los archivos usando el comando git add -A . Este comando agregará todos los archivos al índice que están en el directorio pero que aún no están actualizados en el índice.
Cometer
Se refiere a la grabación de instantáneas del repositorio en un momento dado. Las instantáneas confirmadas nunca cambiarán a menos que se hagan explícitamente. Permítanme explicar cómo funciona commit con el siguiente diagrama:
Aquí, C1 es la confirmación inicial, es decir, la instantánea del primer cambio a partir del cual se crea otra instantánea con cambios denominados C2. Tenga en cuenta que el maestro apunta a la última confirmación.
Ahora, cuando me comprometo de nuevo, se crea otra instantánea C3 y ahora el maestro apunta a C3 en lugar de C2.
Git tiene como objetivo mantener los commits lo más livianos posible. Por lo tanto, no copia ciegamente todo el directorio cada vez que se compromete; incluye commit como un conjunto de cambios, o “delta” de una versión del repositorio a la otra. En palabras sencillas, solo copia los cambios realizados en el repositorio.
Puede comprometerse utilizando el siguiente comando:
git commit
Esto confirmará la instantánea por etapas y lanzará un editor de texto que le solicitará un mensaje de confirmación.
O puedes usar:
git commit -m “”
Probémoslo.
Como puede ver arriba, el comando git commit ha confirmado los cambios en los cuatro archivos en el repositorio local.
Ahora, si desea confirmar una instantánea de todos los cambios en el directorio de trabajo a la vez, puede usar el siguiente comando:
git commit -a
He creado dos archivos de texto más en mi directorio de trabajo a saber. edureka5.txt y edureka6.txt pero aún no se han agregado al índice.
Estoy agregando edureka5.txt usando el comando:
git add edureka5.txt
Agregué edureka5.txt al índice explícitamente pero no edureka6.txt e hice cambios en los archivos anteriores. Quiero confirmar todos los cambios en el directorio a la vez. Consulte la siguiente instantánea.
Este comando enviará una instantánea de todos los cambios en el directorio de trabajo, pero solo incluye modificaciones a los archivos rastreados, es decir, los archivos que se han agregado con git add en algún momento de su historial. Por lo tanto, edureka6.txt no se confirmó porque todavía no se agregó al índice. Pero se confirmaron los cambios en todos los archivos anteriores presentes en el repositorio, es decir, edureka1.txt , edureka2.txt , edureka3.txt , edureka4.txt y edureka5.txt .
Ahora he realizado mis confirmaciones deseadas en mi repositorio local.
Tenga en cuenta que antes de que afecte los cambios en el repositorio central, siempre debe extraer los cambios del repositorio central a su repositorio local para actualizarse con el trabajo de todos los colaboradores que han estado contribuyendo en el repositorio central. Para eso usaremos el comando pull .
Halar
El comando git pull recupera los cambios de un repositorio remoto a un repositorio local. Fusiona cambios ascendentes en su repositorio local, que es una tarea común en colaboraciones basadas en Git.
Pero primero, debe configurar su repositorio central como origen usando el comando:
git remote add origin
Ahora que mi origen está configurado, extraigamos archivos del origen usando pull. Para eso usa el comando:
maestro de origen git pull
Este comando copiará todos los archivos de la rama maestra del repositorio remoto a su repositorio local.
Como mi repositorio local ya se actualizó con archivos de la rama maestra, el mensaje ya está actualizado. Consulte la captura de pantalla anterior.
Nota: También puede intentar extraer archivos de una rama diferente con el siguiente comando:
origen de extracción de git
Su repositorio Git local ahora se actualiza con todos los cambios recientes. Es hora de que realice cambios en el repositorio central utilizando el comando push .
empujar
Este comando transfiere confirmaciones desde su repositorio local a su repositorio remoto. Es lo opuesto a la operación de extracción.
Tirar de las importaciones se compromete a los repositorios locales, mientras que empujar las exportaciones se compromete a los depósitos remotos.
El uso de git push es publicar sus cambios locales en un repositorio central. Una vez que haya acumulado varios compromisos locales y esté listo para compartirlos con el resto del equipo, puede enviarlos al repositorio central mediante el siguiente comando:
git push
Nota : Este control remoto se refiere al repositorio remoto que se había configurado antes de usar el comando pull .
Esto empuja los cambios desde el repositorio local al repositorio remoto junto con todas las confirmaciones y objetos internos necesarios. Esto crea una sucursal local en el repositorio de destino.
Deja que te lo demuestre.
Los archivos anteriores son los archivos que ya hemos confirmado anteriormente en la sección de confirmación y todos están ” listos para enviar “. Usaré el comando git push origin master para reflejar estos archivos en la rama maestra de mi repositorio central.
Veamos ahora si los cambios tuvieron lugar en mi repositorio central.
Sí lo hizo. 🙂
Para evitar la sobreescritura, Git no permite la inserción cuando resulta en una fusión de avance no rápido en el repositorio de destino.
Nota : Una fusión que no es de avance rápido significa una fusión ascendente, es decir, fusión con ramas ancestrales o primarias de una rama secundaria.
Para habilitar dicha fusión, use el siguiente comando:
git push –force
El comando anterior fuerza la operación de inserción incluso si da como resultado una fusión de avance no rápido.
Si desea aprender cómo crear sucursales y cómo fusionarlas, lea el blog completo aquí .
También puedes ver este video mío para obtener más información. No olvides presionar el botón “Me gusta” en YouTube si te fue útil. 🙂