Curso profesional de Git y GitHub 2017

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

Este Post fue realizado haciendo un recuento de los mejores aportes atraves de cada una de las clases, tomando detalles importantes, solo incluye el manejo de Git.

Sistema de Control de Versiones (SCV) :

Es un sistema que registra los cambios realizados sobre un archivo o conjunto de archivos a lo largo del tiempo.

Ejemplo: un ejemplo básico y más usado por todos nosotros es el Ctrl + Z (retroceder) Ctrl + Y (avanzar).

Tipos de Sistemas de Control de Versiones:

Local: Vive en nuestro computador. Si le ocurre una catástrofe vamos a perder nuestro trabajo, además de que Ctrl + Z y Ctrl + Y tienen cierta limitación.

Centralizado: Depende de un súper server donde está almacenado el repositorio. Si se quema el súper server vamos a llorar y perdemos nuestro trabajo.

Distribuido: Cada participante del repositorio tiene una copia local y no afecta el trabajo del resto. No perdemos nuestro trabajo si nuestro computador se daña, simplemente pedimos una copia a cualquier servidor donde esté almacenado el repositorio o una copia de este.

Git en particular es un Sistema de Control de Versiones Distribuido.

Un poco de la Historia de Git: En el año 2002 el núcleo de Linux (Software Libre) debía estar en un sistema de control de versiones para que todos pudiéramos aportar a el, por esta razón se asociaron con BitKeeper (SCV Distribuido), en el 2005 las relaciones ya no estaban tan bien y se le quito a Linux la licencia gratuita de BitKeeper y les empezaron a cobrar, entonces Linus Torvalds (Creador de Linux) decidió crear su propio sistema de control de versiones distribuido y así nació Git.

Características generales de Git:

Velocidad: puedes trabajar fluidamente desde tu computador.

Diseño sencillo: el código es robusto con las herramientas necesarias, como viajar en el tiempo
Fuerte apoyo en el desarrollo no lineal: no trabaja de manera linea, la linea del tiempo tiene bifurcaciones de manera independiente al proyecto principal.

Completamente distribuido: cada quien puede tener una copia del proyecto.

Capaz de manejar grandes proyectos: Linux, Django, Laravel, etc. Usan git.

¿Qué diferencia a Git de otros SCV?

Git no deja vacíos en la historia de un proyecto haciendo una referencia a los archivos que no han cambiado (no copiándolos ya que eso sería pesado), dejando una especia de mini sistema de archivos dentro de Git. Cualquier trabajo es local, puedes trabajar en cualquier parte incluso sin internet.

Git tiene Integridad: Git te observa y sabe qué haces, git almacenas sus cambios en un conjunto de 40 caracteres hexadecimales generados por el algoritmo SHA-1 (Secure Hash Algorithm).

Los tres estados de Git:

Working Directory: es donde trabajamos de manera local, pero para guardarlo hay que pasarlo al Staging Area.

Staging Area: es el área de preparación, se almacenan justo antes de hacer commit.

Git Repository: el repositorio donde almacenaremos los cambios del proyecto.

¡BASTA! Git no es Github

Git: es el sistema de control de versiones.

Github: es punto donde interviene el internet, funciona como la red social de los programadores. Donde puedes, alojar tu repositorio, aportar entre otras más herramientas que aporta.

Configuracion básica de Git:

git config –global user.email your@email.com

git config –global user.name “Nombre Apellido”

Configurar colores dentro de git y ayudarnos de una manera visual

git config –global color.ui true

Instalar Git en Linux:
https://platzi.com/clases/git-github/concepto/sistemas-de-control-de-versiones/instalando-git-en-linux/material/

Instalar Git en Windows:
https://platzi.com/clases/git-github/concepto/sistemas-de-control-de-versiones/instalando-git-en-windows/material/

Comandos basicos de la terminal:

cd nombre_de_directorio = Change directory
mkdir nombre_de_directorio = Make directory
ls = listar archivos, En windows deben usar dir
clear = desplazar el contenido de la terminal (o Ctrl + L)
touch = crea un archivo o modifica su fecha de modificación.
rm = remove –rf (para borrar carpetas)

Nunca usar rm -rf / o se despiden de su pc

Para ser un pro con la terminal ve el curso: https://platzi.com/cursos/terminal/

VIM
i = para poder editar
:wq = para guardar y salir
:q! = para salir sin guardar

¿Cómo crear nuestro primer repositorio?

git init nos crea un repositorio de manera local y lo hará en la carpeta donde estamos posicionados o se le puede pasar [nombre_de_la_carpeta] y creará la carpeta con ese nombre.

Para eliminar un repositorio simplemente tenemos que el eliminar la carpeta .git para ver los archivos o carpetas ocultas corremos ls –a o Ctrl + H dentro de tu gestor de archivos.

**Ejemplo:**rm –rf .git Esto eliminara el repositorio

En Windows: Explorador de Archivos > pestaña Vista> marcar Elementos Ocultos

¿Cómo completar los tres estados de Git?

git status: nos permite ver el estado de nuestros archivos.

Untracked files: Son archivos que están en nuestro Working Directory, lo que aparezca en rojo es lo que se ha modificado y hay que pasarlo al Staging.

Comandos:

git add [archivo]: Nos agrega al archivo al staging area(el limbo) -A nos agrega todos los archivos

git rm --cached: Nos devolvemos un paso

git rm -f [file]: Elimina el archivo por completo.

git add -n [file]: Que no haga nada, solo para ver en donde se encuentran los archivos y que podemos hacer con él.

git commit -m [“mensaje”]: Para llevar del Staging Area al repository, Es bueno ser descriptivos con el mensaje para saber lo que se hizo en ese commit y para informar al resto de personas.

git commit –amend: concatena nuevos cambios al utimo commit realizado.

git log: nos muestra la historia de todos los commits que hemos realizados.

Aprende a como versionar tu proyecto:

Etiquetas ligeras:
git tag [version]

Etiquetas anotadas:
git tag –a [version] –m [“mensaje”]

Para etiquetar veriones pasadas del proyecto se necesita el SHA-1 del commit.

git tag [version] [SHA-1] Tag ligero

Que pasa si te equivocas etiquetando, puedes borrarlo o renombrarlo:

**git tag –d [version] ** para borrar
git tag –f –a [version] –m [“mensaje”] [SHA-1] para renombrar

para ver la lista de tags
git tag –l

¿Por qué utilizar tags si puedo escribir la versión en el mensaje de commit?

Respuesta por Leonidas Esteban: No, para eso son las etiquetas y verás como en github se diferencian en la interfaz. Las etiquetas te sirven para hacer releases de tus proyectos y los commits para nombras que hiciste en cada cambio.

git log: nos muestra una descripción de los commits realizados a lo largo del proyecto

git log --oneline: clos commits de manera resumida y en una sola línea.

git log --oneline –graph: nos mostraria los diferentes commits en las ramas o bifurcaciones con un asterisco.

git log --oneline –graph -[numero]: Nos permite ver la descripcion de un commit especifico.

Documentacion de git log:https://www.git-scm.com/docs/git-log

Este alias te ayuda a visualizar mejor los detalles de tu proyecto:

git config --global alias.superlog "log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"

para usar este superlog:

git log superlog

¿Cómo ver las diferencias entre un commit y otro?

git diff [SHA1]: nos muestra los cambios del estado actual con el commit que le pasamos.

git diff [SHA1(1)] [SHA-1(2)]: nos muestra los cambios del commit (1) con respecto al commit (2). El orden de los parametros importa.

rojo: fueron cambios que se quitaron

verde: se agregaron cosas

Los comandos que te ayudaran a viajar en la historia de tu proyecto:

git reset --soft [SHA1]: Nos permite quitar los cambios de un commit específico. Deja los archivos en el staging area, listos para hacer un commit.
git reset --mixed [SHA1]: nos elimina los cambios, también del staging area.
git reset --hard [SHA1]: Nos elimina los cambios incluso del working directory, es el más peligroso de todos porque podemos perder parte de nuestro trabajo.

¿Cómo crear ramas para trabajar en distintas características de nuestro proyecto?

Las ramas son muy importantes si quieres trabajar con un equipo y no quieres tocar la rama master para no crear conflictos.

git branch [nombre]: se crea una nueva rama
git branch -l: listamos las ramas
git branch –d: borramos rama solo cuando esta no tiene commits
git branch -D [nombre]: borramos la rama de manera obligatoria
git branch -m [nombre_actual] [nombre_nuevo]: para renombrar ramas

¿Cómo movernos a lo largo de la historia de nuestro proyecto?

git checkout [nombre/sha1]: nos permite mover entre ramas y entre commits, no vamos a borrar nada. Acá es donde podemos movernos en el tiempo.
git checkout -b [nombre_rama]: nos permite crear una nueva rama sin necesidad de usar branch, y nos mueve a esa rama de una vez.

¿Cómo mezclar ramas?

Nos ubicamos en la rama a partir de la cual se quiere absorber los cambios y ejecutamos:

git merge [nombre]

tipos de Conflictos

fast-forward: los mezcla automáticamente
recursive/auto-merging: ambas ramas salieron al mismo tiempo y hay algo nuevo en la rama que la otra no recuerda, por eso hace la mezcla recursiva.
manual merge: nos va a tocar decirle a git específicamente los cambios que queremos mezclar.

git rebase [nombre]: hace prácticamente lo mismo que merge, cambiamos la historia de nuestro proyecto sin crear bifurcaciones del proyecto. Es mejor usar merge.

Usar solo git rebase de manera local.

git rebase –i [nombre]: de manera interactiva, nos abrirá el editor que tengamos definido en la configuración de git.

¿Adelantaste algo de tu proyecto pero no quieres hacer un commit por ahora?

git stash: es otro de los limbos, como el staging area. Para agregar los cambios estos deben estar en el staging area.
git stash list: nos muestra la lista de stash que tengamos.
git stash drop stash@{numero}: nos permite borrar un stash.
git stash apply stash@{numero}: aplicamos el último cambio

¿Qué pasa si creaste un commit en la rama equivocada?

git cherry-pick [SHA1]: nos permite cambiar un commit a otra rama para salvarnos la vida.

Curso profesional de Git y GitHub 2017

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

0 Comentarios

para escribir tu comentario

Artículos relacionados