aprendiendo_a_usar_git

Curso básico del uso y configuración de git

Descarga del programa para tener la terminal de Git Bash

pag-pricipal-git

Crear una cuenta en github

Antes de continuar con la configuración de la terminal de git, es muy importante tener una cuenta en github; por lo tanto te explicaré brevemente como crearla. Algo muy importante, es que debes tener una cuenta de correo que puedas tener acceso a el, ya que tendras que realizar una verificación durante el proceso. Si no tienes una cuenta de correo, deberás crearla.

pag-principal-github

nueva-cuenta-en-github.

Configuración en la terminal de git para relacionar tu computador con tu cuenta de GitHub

Cuando mencione alguna línea de comando, derás quitar las comillas, al menos que se mencione que sí las debe llevar.

inicio-gitbash

git config --global user.name "aquí agregas el nombre de usuario de tu cuenta de Git Hub con las comillas"

user-name

git config --global user.email Aquí-escribes-tu-correo-pero-sin-comillas

user-email

git config --list

Los datos que ingresaste, deberan estar hasta el final como se muestra en la imagen siguiente:

list

Agregar una clave rsa en Git Hub

ssh-keygen -o -t rsa -b 4096 -C "aquí agregas tu correo con las comillas"

Las claves que se vana generar es una pública y una privada. Debes tener mucho cuidado con el uso de la clave privada, esa la debes mantener tu.

Una vez que le des enter, empezará a cargar, en mi caso ya tenía uno existente y me pidió si quería sobreescribir, por eso le escribí “y” para decirle que SÍ. Después pide que se agregue unsa frase; te recomiendo que solo le des enter, porque luego puede que no recuerdes la frase. Y te pedirá que confirmes la frase, pero le vuelves a dar enter. Al final quedará creado el ssh en la ubucación como se marca en la imagen:

creacion de ssh

Este archivo, contiene por así decirlo, la clave que se usará para hacer la conexión entre nuestra cuenta de Git Hub y nuestro computador. Primero vamos a la ubicación del archivo, y hacemos lo siguiente como se muestra en la imagen, clic derecho y seleccionamos “Git Bash Here”:

Git Bash

Por último se escribe lo siguiente; es muy importante que le escribas “.pub”, ya que son dos claves creadas, una pública con extensión .pub y la privada:

cambio de directorio

Settings

SSH and GPG keys

neva clave

finalización de la nueva id

Creación de un nuevo repositorio

Repositories

Nuevo Repositorio

Datos de repositorio

Si seleccionas inicializar con un README, es muy probable que no te muestre esa ventana, pero no hay problema; de todos modos más adelante explico cómo subir un proyecto al repositorio.

Repositorio

Cómo agregar archivos a un Repositorio desde el Git Bash

Proyecto1

Proyecto2

git init

Deberá aparecer la palabra “master”.

Una vez inicializado tu carpeta con la palabra init, ya no es necesario inicializar en alguna otra ocasión. Solo debes inicializar cuando es en una carpeta diferente.

Si en la carpeta donde creaste el init, creas una carpeta más, tampoco es necesario que inicialices adentro de esta, al menos que así lo desees.

Inicialización

git remote add origin git@github.com:Madera971003/aprendiendo-a-usar-git.git

Existen dos links que te pueden aparecer, una es usando SSH y otra usando HTTPS. También más adelante estan los pasos en caso que quieras cambiarlo.

En tu caso deberás copiar el que te aparece a ti en la línea de comandos, de la siguiente forma dando un enter:

Remote

Este comando, nos agregará todos los archivos que tenemos en la carpeta donde estamos ubicado.

git add -A

O también puedes usar el comando siguiente:

git add .

Agregar todo

Este comando, nos agrega un archivo en específico. Debes poner la extensión del archivo que estes agregando.

git add name-file.extension

Los comentarios se ponen de la siguiente manera con las comillas:

git commit -m "Comentario  de la acción que estes haciendo"

Comentarios

Pero también te puedes ahorra tiempo con el siguiente comando:

git commit -am "Comentario que desees poner en esta parte de los cambios realizados"

El comando anterior, sirve para agregar todos los archivos, y al mismo tiempo colocar el comentario

Este comando solo se usa una primera vez.

git push -u origin master

También puedes utilizar el siguiente:

git push origin master

Cuando le pones master, los cambios se van al master; en caso que no quieres eso, ponlo a la rama que quieras.

Git Push

Para modificaciones a futuro, solo se usa:

git push

Regresar a versiones antiguas

Resgresear a versiones antiguas, es de mucha utilidad. En muchas ocaciones realizamos modificaciones que no nos gustan y queremos la versión anterior. En Git Hub tienes la opción de regresar a versiones anteriores. Por eso es muy importante que los comentarios que agregas sean lo más descriptivo posible, para que sepas en que versión debes regresar. Ya que si cometes el error en regresar en una versión que no era la que querías, ya no podras regresar a versiones “futuras”. Más adelante se muestra como realizarlo.

git log

Existen algunas formas de cómo puedes visualizar tu historial de trabajo o versiones. Te dejo algunas formas:

Las versiones de las primeras líneas, seran las versiones más recientes, mientras que las de abajo, seran las más antiguas.

git log --stat

Muestra todos los comentarios con detalles.

git log --all

Te muestra los comentarios con detalles y la ramificación.

git log --all --graph

Te muestra cada comentario y detalles con su ramificación; es algo similar al anterior.

git log --all --graph --decorate

Te muestra cada uno de los comentarios que has hecho sin tantos detalles.

git log --all --graph --decorate --oneline

Muestra detalles a grandes rasgos.

git log --all --graph --decorate --oneline --simplify-by-decoration

Versiones

Existen dos comandos diferentes que ayudan a regresar a versiones anteriores.

git reset <version> --hard
git reset <version> --soft

Te explico. Cuando tu haces una modificación a tu proyecto, por lo regular agregas esos cambios y luego agregas un comentario; eso es como si tus cambios estubieran al “aire”(menciono “aire” para que te des una idea, no es que sea literal) esperando subirse a la nube, es decir a Github. El comando –soft, te regresará a la versión que quieres, pero aun te mantiene ese archivo que estaba en el “aire”. En cambio el comando –hard, que es el más usado, eliminará todo hasta llegar a la versión que querías.

Selección de versión

git reset b011ec5681901a66a5728cd75c6fc56d4b2a04f8 --hard

Regreso a la versión inicial

Comprobación del regreso de versión

Quiza en este momento te este preguntando, qué pasaría si agregaras uno de los códigos cortos cuando usas un git log diferente. Bueno, pues pasaría exactamente lo mismo, ya que esos códigos que son más cortos, son suficientemente diferente de los demás.

Ahora haciendo la prueba con el --soft

En la imagen se puede ver solo me quede hasta la parte donde he subido el archivo. Así que allí aplicaré el comando.

Regreso de versión con soft

Ahora como se puede ver en la imagen, no se ha perdido las midificaciones pero si aplico git log, ya no me aparecen las versiones anteriores.

Comprobación de soft

Por último ponemos un commit para que se suba la modificación y quede guardado. Después comprobamos con git log.

En la imagen siguiente se muestra la imagen de lo que paso. Te explico.

Cuando trabajamos en un proyecto subimos modificaciones que no son tan relevantes que esten apareciendo en el historial. Una buena opción es usar el --soft para ello tienes que primero aplicar en el último cambio la agregación de archivo o archivos: git add . para que quede en el “aire” tus documentos. Después aplicas el git reset <version> --soft, y por último agregas el comentario y compruebas con git log y te debió haber eliminado todos los commits intermedios.

Comprobación de soft

Comparación de versiones de archivos

La comparación de versiones, en muchas ocasiones, suele ser de mucha ayuda siempre y cuando los archivos sean de TEXTO PLANO; si los archivos son de tipo BINARIO, es muy difícil o “imposible” que sepas cuales han sido sus cambios.

El comando que se utiliza es el siguiente:

git diff

Prueba de git diff

Cuando los archivos ya han sido agregados y colocados con un commit, y aplicas el git diff no mostrará nada, pero si existe algún cambio reciente, prodras verificar los cambios con el comando.

Existen más formas para visualizar cambios creados.

Comparación de versión reciente con antigua

Por ejemplo, si quieres ver cual es la diferencia entre la versión actual y alguna de las versiones antiguas, es muy fácil, y lo obtienes con lo siguiente:

git diff <versión reciente> <versión antigua>

Versión reciente vs versión antigua

Comparación de versión antigua con reciente

También puedes aplicar lo contrario; es básicamente los mismo, pero a la inversa.

git diff <versión antigua> <versión reciente>

Versión antigua vs reciente

Casos de binarios y otros caracteres

Esto es lo que pasa si usas caracteres que sean un poco extraño, o de un alfabeto diferente. Pero si te dedicas a la programación por lo regular son solo texto plano. Te hago saber esto para que tengas un poco de cuidado; pero no significa que git no lo pueda manejar, pero si quieres saber más a detalles lo que ha pasado con el documento, puedes abrir directamente el archivo si esto fuera posible.

Caracteres no identificados

Ventana de características y detalles

Una última forma donde lo puedes visualizar de mejor manera, es con el siguiente comando:

gitk

El comando anterior te lanzará una ventana como la que aparece abajo, donde puedes configurar que cambios quieres ver.

Ventana de detalles

Si tienes muchos archivos y modificas varios al mismo tiempo, el comando también te lanzará cada una de las diferencias de cada archivo que tienes almacenado.

Si haces todo esto para archivos binarios, te mostrará muchos simbolos que son un poco complejos. Pero como te he mencionado, no significa que este mal el archivo o que sea imposible de subir o guardar.

Ramas (Branches)

Esto es como un árbol.

Las ramas pueden tener todo el contenido de la rama Master o de alguna otra rama.

Creación de ramas y moverse en ramas

La creación de una rama se hace con el siguiente comando:

git branch <nombre de la rama>

Si la rama lo creamos desde la rama Master, quiere decir que se creará una nueva rama, y al instante se copiará todo el contenido que este tiene a la nueva rama. En cambio si la nueva rama se crea desde otra rama existente, este copiará todo lo que tenga la rama desde donde fue creado.

Creación de rama

En la imagen se ve como si no hubiera pasado nada, pero puedes comprobar con lo siguiente:

git branch

Ver branches

Por último, para cambiarse de rama, se usa lo siguiente:

git checkout <nombre de la rama(branch)>

Cambiar de rama

Dar permiso a Colaboradores

Para agregar colaboradores a un repositorio, lo haces desde tu GitHub.

Configuración de repositorio

Busqueda de colaboradores

El colaborador deberá ir a su correo donde verá reflejado la invitación, y él o ella aceptará si así lo desea.

Subir ramas a Github

Subir las ramas creadas localmente no es muy complicado, y se hace de la siguiente manera:

git push origin <nombre de rama>

Ramas antes de subir

Comando para subir ramas

Así es como se ve en la ventana de Github después de subir una nueva rama al repositorio.

Ramas después de subir

Merge de una rama con otra

Los “Merges”, son muy útiles en el preoceso de desarrollo de un proyecto. Esto sólo se puede utilizar siempre y cuando se tengan otras ramas.

git merge <nombre de la rama para hacer la unión>

Los merges funcionan entre ramas, así como con el master. Puedes hacer un merge llevando los datos del master a una rama así también de una rama al master.

Es muy importante tener cuidado con el uso de este comando. Si estas trabajando con un equipo en alguna empresa, trata de no usar este comando con la rama MASTER, al menos que tu seas el responsable de hacer estos tipos de cambios.

Te recomiendo que crees alguna carpeta muy aparte de tu proyecto y practiques y veas todo lo que podría pasar.

Cherry Pick

Cherry Pick se trata de hacer un “merge” por así decirlo, entre una rama y alguna VERSIÓN de otra. Esto se usa cuando ya tenes una parte del proyecto funcionando y sigues avanzando, pero quieres mandar solo hasta un cierto punto de lo que has trabajado. Para ello usas el Cherry Pick.

El siguiente comando lo aplicas desde la rama que llamará los cambios de otra.

git cherry-pick <Version para hacer la unión>

Muchos dicen que el uso de este comando es una mala práctica; así que recomendaría que lo uses en caso de ser necesario.

Eliminar ramas

Para eliminar una rama no es muy difícil. Pero se debe de tener cuidado con el uso del comando.

El siguiente comando te mostrará algunos detalles de la rama, y te advierte si estas seguro:

git branch -d <nombre de la rama a eliminar>

El siguiente comando es cuanto estas seguro de eliminar la rama:

git branch -D <Nombre de la rama a eliminar>

Cambiar de nombre a una rama

Si por escribir rápido, te das cuenta que el nombre de la rama que creaste esta mal; hay alguna forma de cómo cambiar al nombre correcto.

En el primer caso, estando desde la rama que creaste, colocas lo siguiente:

git branch -m <Nombre corregido de la rama>

En el segundo caso; estando desde otra rama. Para esto, usas lo siguiente:

git branch -m <Nombre de la rama a corregir> <Nombre corregido de la rama>

Restringir rama Master

Tags

Si ya sabes que son los Tags, puedes saltarte esta pequeña parte.

Los Tags son cuando quieres crear versiones de tu trabajo. Imagina un programa, cuando por lo regular lanzan un nuevo programa, es muy común ver las versiones que lanzan, por ejemplo: “Versión 1.02.1”, o cosas por el estilo.

Lo mismo pasa con nuestro proyecto. Cuando ya tienen una versión funcionando y quieren lanzarlo, o cuando quieren marcar el momento en que su proyecto ha estado funcionando de manera correcta, y que si llega a pasar un desastre 😐 después, puedan saber el momento exacto al que deban regresar.

Los Tags te sirven para llevar un buen control en tus proyectos.

Mas adelante te explico algunas de las tareas básicas de los Tags.

Creación de Tag

Antes del siguiente paso, una recomendación muy importante, es que el equipo de trabajo debe saber los nombres que usaran a las versiones. Por ejemplo algo muy común es usar: v0.1v0.2 … etc.

git tag -a <Nombre de la versión> -m "Algún comentario con las comillas" <La versión que llevará el Tag>

Creación de un tag

Verificación de versión

Subir Tag a Github

Eliminar Tags

Clonación de proyectos

Pull Request

Creación de un Pull Request

Pedir opiniones o puntos de vista a equipo

Merge del Pull Request con master

Fork