Estas son mis notas del curso con los comandos explicados de manera sencilla
Espero que les sirva 😃
Git y github
¿Qué es git?
Git es un sistema de control de versiones, nos sirve para saber cuando un proyecto (una serie de archivos) tiene modificaciones, cuando se modificó, que se realizó en la modificación, saber cuál fue el último cambio, regresar a antes de borrar todo por accidente, saber quien hizo mal un cambio, ver cómo eran tus archivos antes y poder recuperar cosas de ahí. Github es una página web que nos ayuda a usar git y hacer públicos nuestros proyectos asi como ver los de los demas
En git se deberían manejar puros archivos de texto plano, no con formato ni binarios ya que cualquier otro tendrá mucho texto que no nos sirve y llenará git de muchas cosas que no nos sirven.
Git se puede utilizar en la terminal o en un programa que nos ayude a hacerlo asi como también se puede usar una plataforma como github y gitlab.
¿Que es un repositorio?
Un repositorio es la historia de del proyecto está compuesto por los commits, un commit es cada vez que hacemos una nueva versión del proyecto. Para iniciar un repositorio se necesita estar en la carpeta principal y hacer git init. Para hacer los commits debemos hacer un cambio. Al hacer un cambio lo primero que debemos hacer es mandar los cambios a el área de staging con git add, después de ahí deberemos hacer git commit para realizar el commit el cual tendrá el nombre que indiquemos con -m””. Después tendremos una larga lista de commits con el registro de todos los cambios hechos alguna vez al proyecto.
¿Que es una rama?
Los commits se verán como una lista que si hacemos muchos cambios podríamos llegar a perdernos, para esto existen las ramas, las cuales son como extensiones a la lista, siempre hay una rama inicial que se crea al iniciar el repositorio, se llama master y podremos hacer más cuando queramos
Volver en el tiempo
SI alguna vez quisiéramos regresar en el tiempo por alguna razón, hay 2 maneras git checkout que nos permitirá ir a cualquier commit que haya en el cual podremos ver copiar y recordar cómo era. En cambio tenemos git reset que lo que hace es regresar a un commit viejo y borrar los posteriores a él. Hay 2 maneras --hard y --soft, el primero regresa y ya está, el segundo dejara nuestros cambios en staging y regresaremos.
Git rm --forced nos sirve para eliminar archivos de git y del disco duro aunque seguirán estando en commits viejos
git rm --cached saca a los archivos del área de staging
Merge
git merge es un comando que permite fusionar ramas. Estaremos en la rama que queremos que registre la función y le haremos un merge con otra rama. Git juntara los archivos. Si un mismo lugar de un archivo se modificó en ambas ramas generará un conflicto que debemos solucionar eligiendo que se queda.
Github
github es una herramienta que nos ayuda en la gestión de git, actuará como un repositorio remoto el cual podría ser público para que mas gente lo vea. git clone hará una copia exacta del repositorio que esté en github en nuestro ordenador. git fetch trae los nuevos commits a nuestro ordenador, pero hay que hacer un merge a eso para que esté en nuestras ramas, para eso existe git pull que hace las dos cosas de una sola vez, más simple
Los tags son maneras de darles etiquetas a los commits para encontrarlos más fácil
En github podemos decirle quién puede hacer un push para modificar el proyecto
Podemos conectar github con ssh para mayor facilidad en los push
Profesionalismos
Pull request y fork
En github existe una herramienta llamada pull request, esto lo que hace es que una persona cualquiera puede solicitar hacer un pull a un proyecto ajeno, esto sirve para que el desarrollador decida si aceptarlo o no. Para hacer esto debemos hacer un fork, un repositorio idéntico y hacer nuestros cambios en un commit. Después haremos un pull request el cual puede ser comentado para mejorar, aceptado o rechazado.
Gitignore
SI alguna vez tenemos un archivo, una serie de archivos o un tipo de archivos que no queremos que sea trackeado por git (como imágenes), git nos provee una herramienta llamada gitignore el cual es un archivo el cual contendrá la lista de los archivos que no queramos trackear y no se agregaran nunca más
Readme
Un readme es un archivo de texto (tiene formato) que dice y muestra que es el proyecto el porque y como, es una buena práctica hacer uno para cada repositorio asi le daras la introducción a cualquiera que llegue a tu repositorio
GitHub Pages
Github provee una herramienta de hosting de sitios web gratuita, solo debemos habilitarlo en configuraciones del repositorio y github nos dara un enlace con nuestro proyecto esto puede llegar a ser muy útil.
Más herramientas de git
rebase
rebase es un herramienta que añade una rama completa a otra en vez de soo juntar sus últimos commits (es una mala practica ya que hecha a perder los registros)
stash
si tenemos cambios y queremos hacer un checkout sin tener que hacer el commit, tenemos a stash. Agarra los cambios hechos y los guarda en un lugar temporal mientras hacemos checkouts, revisamos cosas, vemos otras ramas, etcétera. Al final solo volveremos a hacer stash en donde queremos los cambios y listo
cherry-pick
Cherry-pick es lo opuesto a rebase por así decirlo, cherry pick trae un commit de otra rama a la rama actual , en vez de hacer un merge o hacer los cambios en la rama deseada.
amend
Amend nos sirve por si hacemos un commit y si nos olvidó algo de poner, amend lo que hace internamente es un commit, un merge con el commit anterior y borra el commit que creo, esto es un a manera de remendar un commit.
grep
Grep nos sirve para buscar palabras clave en el repositorio, puede ser de cualquier archivo/carpeta
reflog
reflog muestra un historial extenso sobre todo lo que se ha hecho en el repositorio, los commits los merges, las ramas, etc
Muy bueno hermano!!
Gracias, Enrique por este resumen. Mi parte favorita, como explicas el concepto de Git Cherry Pick