*GitHub y GitLab
Me llamo Elena y soy Adalaber.
He trabajado como programadora y maquetadora de front, y he hecho un máster en JavaScript y NodeJS en Fictizia. Actualmente estoy redirigiendo mi carrera.
Liada en OSW (Open Source Weekends) y Hackmadrid27%
Twitter: @lpez_elena
GitHub: elenamlopez
1. git status:
$ git status
Git status nos dice el estado en el que se encuentran nuestros archivos. Si están sin seguimiento, si tienen seguimiento pero se han cambiado o si están en Stagin ya.
Añade el archivo que le pasemos a stagin area, y que luego estará en el commit.
$ git add <nombre_archivo>
$ git add .
Este comando agrega todo lo que se haya cambiado a Stagin Area.
Busca más formas de agregar a stagin =)
Con este comando hacemos un commit de los archivos que estén en stagin area.
Se hace una instantanea de los archivos en ese momento y se agrega a la cabecera (HEAD) quedando registrado y guardado como un punto en el tiempo con un número SHA de referencia.
$ git commit -m "Mensaje de tu commit"
Nos mostrará un log o histórico de commits realizados en este repositorio.
Copiarlo en un archivo de texto o similar puede ser una gran idea si piensas viajar en el tiempo de tu histórico...
Para salir de ahí pulsa q!
$ git log
$ git checkout <codigo_sha>
Nos lleva al estado del repositorio en ese momento.
Para volver a donde estábamos tienes que coger el código SHA en el que te encontrabas.
No creas que viajo mucho en el tiempo...
$ git checkout <codigo_sha>
1. .gitignore:
Es un archivo, en el que se ponen las carpetas y archivos de los que no deseamos que Git haga un seguimiento.
Por ejemplo aquellos archivos y carpetas con información sensible como tokens, o carpetas de instalación como node_modules.
#History files
.Rhistory
.Rapp.history
etc...
Todo lo que pongas en el archivo .gitignore,
será ignorado por git
Todo tiene solución en Git.
Si te lías, rompes algo, subes lo que no debías, comiteas sin querer algo que no debías comitear... Has hecho un rebase forzado y la has liado parda...
¡¡¡ TODO SE PUEDE SOLUCIONAR EN GIT !!!
No se puede deshacer, porque se pierde la referencia totalmente, si haces eso sin haber guardado un commit, perderás (para siempre y doy fe) todos los cambios que hayas hecho.
El por qué aquí
$ git checkout .
Toma el estado en el que se encuentra el archivo y hace una derivación a otro espacio, de forma que se puede trabajar en él sin afectar al archivo inicial.
Más adelante podemos juntarlos.
Por ejemplo: git branch mi-rama
Por ejemplo: git checkout mi-rama
* Hay un comando para crear una rama y moverse directamente a ella:
$ git checkout -b <nombre_de_tu_rama>
$ git checkout <nombre_rama>
Dentro de tu rama puedes trabajar normal, hacer tus commits y avanzar en el proyecto, pero lo que haces está sólo en esa rama.
Si cambias de rama sin más lo que hayas hecho en esa rama no lo vas a ver.
Para poder juntar todo tienes que mergear (fundir o fusionar) las ramas...
$ git merge nombre_rama
1. Situandonos en la rama a la que queremos mergear los cambios de otra, poner en consola:
1. Todo se ha hecho bien y no hay problemas.
2. Cada uno ha tocado el mismo archivo por su cuenta y al mergear las ramas dan conflicto. Git no sabe que cambios son los que han de permanecer, y lo junta pero con conflicto, y te pide que los soluciones...
En un mundo ideal lo suyo es ponerse de acuerdo en que hace cada uno. En caso de conflicto sentarse con la persona con la que nos ha surgido y determinar qué es lo que vale.
Pero si no es así toma una decisión , haz un Pull Request y solicita revisión de la persona con la que tienes el conflicto o espera a poder hablar con ella. Intenta no romper nada... X)
Una vez hecho esto, los pasos son los que siguen:
Para que el commit que vas a hacer quede ligado a un Issue en concreto:
Para que el commit que vas a hacer cierre un Issue en concreto:
$ git commit -m "blablablaa #nºissue"
$ git commit -m "blablablaa Fix#nºissue"
$ git push origin nombre_de_la_rama
Una vez tienes ya todo guardado y subido, mergea tu rama a donde corresponda, por ejemplo develop:
Pasos:
1. Hazte pull de la rama donde vas a meter tu rama.
2. Muévete a la rama donde vas a llevar tus cambios.
3. Haz merge de tu rama a la rama donde estás.
$ git merge rama_a_mergear
Mantener la higiene de ramas es algo importante. Si no vas a desarrollar una segunda release, o incluso un proyecto paralelo... cuando acabes con el trabajo de una rama... ¡¡¡MÁTALA!!! muaaahahahahahha... kill it, kill it...
$ git branch -D nombre_rama
Buena higiene:
Mala higiene:
El mundo es genial, hasta que llega Windows..., con un poco de terapia he superado el shock post-traumático.
Representación gráfica de mi persona cuando MrCodeDev me dio la noticia... Una noche dura
Cuando el código está tan solo en tu ordenador, es lo que se llama 'repositorio local' o 'tener el repositorio en local'. En principio sólo tu tienes acceso.
Cuando el código lo subes a internet, ya sea en Github o cualquier otra plataforma es cuando se habla del 'repositorio remoto', o 'repositotio en remoto'
Tienes tu código en tú maquina, y sólo lo ves tú, pero puedes subirlo a un repositorio remoto.
Hay varios sitios donde hacerlo, pero nos vamos a fijar de momento en GitHub. (... y GitLab ...)
Con GitHub (... y GitLab ...) podemos compartir nuestro código y trabajar con otras personas. También podemos tener nuestro código alojado.
Tiene versión gratuita y de pago (... y GitLab también).
settings/options
selecciona la rama en la que tienes tu versión para publicar
Cuando tienes un repo en remoto:
En resumen:
Cuanto más actualizada tengas la rama donde estás y tu repo, menos conflictos tendrás.
ANTES DE HACER PUSH HAZ PULL
Es Open Source y puedes montarte tu propio servidor de GitLab en casa... pero eso es otra historia ;)
Salvo algunos detalles tiene muchas cosas similares:
Además es Open Source
Pero os dejo unos vínculos para investigar:
No tengáis miedo y probad cuando os veáis mas sueltos con la herramienta
En resumen:
Cuanto más actualizada tengas la rama donde estás y tu repo menos conflictos tendrás.
ANTES DE HACER PUSH HAZ PULL
En consola poner:
¡¡¡¡¡ Cuando hagas push, recuerda hacerlo a ambos !!!!!!
(o tendrás un bonito caos...)
$ git remote add nombre_para_remoto url
Esto es un vídeo de búhos por si en este punto la desesperación es patente...
^.^
Mejor ponerle README... y licencia
Básicamente te haces una copia del repositorio en tu GitHub
$ git config --global user.name "nombre"
$ git config --global user.email "tu_mail@example.com"
$ git config --list
En local...
$ git config --global user.name "nombre"
$ git config --global user.email "tu_mail@example.com"
$ git config --list
$ git init
$ git clone <url del proyecto>
Aquí vemos el vínculo para añadir un remoto o clonar en local
Lo ideal es que no se den... pero se van a dar.
Ten siempre MUY en cuenta que es lo que has hecho tu, y que es lo que viene de afuera
Si no lo haces puedes tener un buen lío...
Y recuerda CASI TODO EN GIT tiene solución
Evitar conflictos absurdos antes de que se den:
PONERSE DE ACUERDO TE QUITARÁ DOLORES DE CABEZA
Esta es la página principal de GitHub
Ir a la pestaña 'Issues', veremos esto:
New Issue y... ¡A jugarlo!
Aquí está el commit, fixeando una issue...
Y aquí el botón para hacer PR
Si tienes permiso sobre el repo claro...
En parejas ;P
En parejas ;P
Es importante entender que todo lo que hago para simular ser otra persona no es en absoluto necesario para Git.
Olvidaros totalmente del tema de levantar máquinas virtuales ni el tener que lidiar con dos cuentas de github, o otras historias similares.
*Lo realmente importante es que voy a ser dos personas al mismo tiempo XD
Forkear el repo para la práctica
Settings / Collaborators
Cambiaros en local a la rama practica
En la consola poned:
git checkout practica
(no uséis nunca ni tildes ni caracteres extraños en los nombres de las ramas, tipo 'ñ' o 'ß'...)
En el editor:
En GitHub:
En GitHub:
Rama a mergear
Rama en la que queremos mergear
Se puede editar y escribir, así que hay que borrar todo lo que no sirve. Cuidado con borrar cosas que sí son necesarias
Si todo ha ido bien, ahora en la rama de práctica al ejecutar index.html deberías ver algo así en la rama practica:
Selecciona una plantilla de kamban normal o lo que prefieras.
^.^
Comandos básicos de git en castellano:
https://gist.github.com/ElenaMLopez/ca17cb107b6a3c51946279f8fd67327d
Libro de referencia: https://git-scm.com/book/es/v1
Chuleta de GitHub: https://github.github.com/training-kit/downloads/es_ES/github-git-cheat-sheet.pdf
Chuleta de muy pro: https://elbauldelprogramador.com/mini-tutorial-y-chuleta-de-comandos-git/#chuleta-de-comandos-git
Consola (linux):
https://gist.github.com/ElenaMLopez/eec11d0d10fbceb446709d12927d0c27