[Música] bienvenidos al Canal de karmi soy Dino Y en este video vamos a hablar sobre github vamos a ver cómo crear un repositorio Cómo levantarlo eh cómo tener el código en nuestra PC y poderlo subir por si trabajamos en equipo y demás esto sirve tanto para la gente que está desarrollando código de aplicaciones lo que sea como también para los que estamos automatizando que necesitamos subir nuestro código a un repositorio para que nuestro equipo también pueda acceder a él Así que bueno vamos a verlo con github si bien existen otros repositorios como gitlab bitbet etcétera
para mí github es bastante sencillo y lo vamos a utilizar con una herramienta de ellos mismos llamada github desktop que nos facilita aún más poder subir el código Bueno antes de ir con la parte práctica vamos a ver una pequeña introducción teórica que es vital para poder entender todo esto por un lado tenemos lo que es git y por otro lado tenemos lo que es github yo he visto que muchas veces la gente lo confunde y cree que es exactamente lo mismo pero son dos cosas totalmente distintas git es un sistema de control de versiones
de código que sirve para eh No sé tener un historial de todos los cambios que se van haciendo sirve para rastrear código o rastrear cambios en el código lo podemos revertir y entre muchas cosas más y github es una herramienta o mejor dicho es como una plataforma e que está basada en la web una página web ustedes pueden entrar a github.com y sirve para alojar todo el código d nosotros estamos trabajando Por qué la gente lo suele confundir bueno porque para poder alojar el código en github necesitamos utilizar git y ahora menciono github pero nada
lo mismo con gitlab con bitbet etcétera Y ustedes se preguntarán Por qué existen estas herramientas bueno básicamente para volver el código colaborativo lo puedo usar yo solo como vamos a hacer ahora que voy a estar trabajando en un repo yo solo pero en caso de que tengamos compañeros de trabajo es fundamental utilizar este tipo de control de versiones básicamente porque cuando estamos desarrollando por ahí podemos pisar el código de nuestro compañero o nuestro compañero puede pisar nuestro código y con git podemos ver qué fue lo que pasó podemos revertir esos cambios ver cuáles son los
conflictos que que podemos llegar a tener antes de subir código entre muchas cosas más así que bueno de eso se trata un poco el video que vamos eh que estamos haciendo el día de hoy eh voy a enseñarle algunos conceptos básicos o comandos que se suelen utilizar en en git eh Y bueno vamos a hacer una pequeña práctica de cómo clonar un repositorio Cómo subir cambios y todo eso dentro de los conceptos generales tenemos a lo que sería el repo repositorio que ya más o menos lo fuimos mencionando que es en donde git almacena el
código y todo el historial de cambio que esto puede ser de forma local es decir lo puedo tener en mi computadora como también puede ser de forma remota utilizando github gitlab y todas estas herramientas que ya estuvimos hablando previamente después tenemos lo que es un comit que un comit es una captura en un momento específico Por ejemplo yo tengo todo mi código digo Bueno voy a hacer un comit ahora yo le puedo asociar un mensaje puedo decir Bueno este comit tiene cambios en tal Y tal cosa y todo eso va quedando guardado en un historial
Entonces si después tengo que revertir o ver Qué cambios tiene cada comit puedo ir revisando todos esos mensajes y puedo saber qué código tenía en un en cada momento específico y después tenemos lo que es el Branch que Branch quiere decir rama en inglés y eh es como una línea independiente de desarrollo Por lo general siempre tenemos la rama Master o Main que es como la principal pero yo puedo crear infinitas ramas Para ir trabajando distintas funcionalidades en un video anterior yo estuve hablando sobre lo que era gitflow y demás que ahí se explica un
poco más pero lo podemos repasar rápidamente ahora también para que ustedes sepan a qué me refiero no esta es la imagen a la que yo hacía referencia lo expliqué en otro video previamente Pero ahora sí amerita que le dediquemos tiempo porque viene al caso esto es gitflow es la forma una de las formas de trabajar con eh con git en donde tenemos distintas ramas más tenemos la Master o Main que es la principal en donde está todo el código productivo y después tenemos distintas ramas que se van a ir trabajando distintas cosas por ejemplo tenemos
la de hotfix que hotfix sabemos que es cuando aparece un Bag en producción y lo tenemos que resolver inmediatamente Por qué inmediatamente porque por lo general en en en la industria del Software se trabaja con Sprint con metodologías ágiles y por lo general se hacen deploy es decir se sube código cada dos semanas cada tres semanas cada una semana etcétera Pero hay veces que eh aparece un error muy crítico que no puede esperar esas dos semanas y lo tenemos que resolver de forma inmediata entonces hacemos una nueva rama que se llame hotfix lo arreglamos y
lo subimos rápidamente a producción después tenemos eh esta rama llamada Release los Release suelen ser como versiones candidatas a ir a producción por eso es que de acá sube a producción por lo general en esta rama en donde suelen hacer las pruebas de uat o o los qa suelen testear acá podría llamarse qua en lugar de Release después tenemos la rama de develop que es la rama de los desarrolladores en donde van a ir haciendo todos los cambios y después tenemos las ramas de los distintos features en donde van a ir trabajando los developers feature
quiere decir funcionalidad Por así decirlo hagamos cuenta que estamos haciendo un sistema y eh Este feature habla sobre el formulario de registro y este sobre el login sí Entonces el desarrollador uno va a crear esta rama llamada feature registro y va a empezar a trabajar su código ahí y el segundo desarrollador le va a poner feature login y va a empezar a trabajar el login acá como podemos ver de la Master baja el código o sea hacen una copia del código en develop y de hacen otra copia para sus respectivas ramas una vez que terminan
lo vuelven a unir con develop y una vez que ya está todo listo lanzan un Release para que lo pruebe la gente de de whatat o de qa lo que sea y cuando dan el Ok va nuevamente a producción y en caso de que falle vuelve otra vez a develop y bueno pueden hacer cambios lo que sea no fíjense que Este desarrollo o sea el primero terminó todo y pudo unir el código llegó a producción el segundo desarrollador todavía lo está desarrollando no ha terminado pero cuando lo vaya a unir tiene que tener en cuenta
que su compañero ya terminó entonces tiene que bajar de vuelta el código compararlo con el que hizo él ver que no rompa nada y recién ahí empezarlo a unir hasta que llegue a producción para esto sirve git para trabajar de forma ordenada de ver si existen conflictos entre código entre compañeros en caso de que yo le rompa el código poder revertir la situación o por poder ver bien eh Qué cosas tenemos distintas eh Y todo ese tipo de cosas así que por eso es muy importante entender gitflow o por lo menos este gráfico para ver
cómo se suele trabajar con git seguimos con más conceptos generales tenemos lo que es el merch que es el proceso de combinar los cambios de una rama con otra que como vimos recién en el dibujito eh Por ejemplo acá nosotros Nos bajamos el código hacemos el cambio y cuando lo subimos a esto que estamos haciendo acá que lo estamos fusionando con la otra rama A eso se le llama merch lo mismo va a pasar acá acá acá y en todos estos estas partes donde tenemos que combinar códigos entre las distintas ramas esa acción se le
llama merge la la acción de unirlo después tenemos lo que es clon o clonar y tal como dice la palabra sirve para clonar un repositorio remoto en nuestra computadora que es lo que vamos a hacer el día de hoy tenemos lo que es el Pull que el Pull es un comando que se utiliza para actualizar nuestro repositorio local con eh cambios remotos es decir nuevamente volvemos al dibujito por ejemplo acá abajo que va a pasar este desarrollador antes de subir el código tiene que hacer un Pull para ver los cambios que va a tener que
hacer o los cambios que hay Porque él esto es como una línea del tiempo no él se baja el código en esta instancia el día lunes por ejemplo pero cuando él lo quiera subir el día viernes acá en el medio el martes miércoles jueves y demás el otro desarrollador Estuvo trabajando en cambio entonces él se va a tener que bajar nuevamente los cambios ver qué cosas tiene distintas arreglar eso antes de subirlo entonces para eso sirve el Pull después tenemos el Push que es para subir nuestros comit locales a un repositorio remoto de nuevo como
estábamos en el dibujito cuando el desarrollador quiera subir su para hacer ese merch ahí tiene que hacer un un Push así que bueno para eso se utiliza ese Comando y después tenemos lo que es el fetch que la diferencia quizás está en que descarga los cambios muy similar al Pull nada más que sin combinarlos simplemente los baja para ver qué tenemos de distinto no y ya para terminar con los conceptos generales tenemos lo que es el conflict o conflicto es cuando los desarroll adores están trabajando en distintas ramas pero en el mismo archivo por ejemplo
nosotros dijimos que podemos hacer ramas por feature no sé en el formulario de Registro un desarrollador está trabajando para que pida no sé el el correo electrónico y el otro está trabajando para que pida la fecha de nacimiento son dos cosas distintas pero están en el formulario de registro entonces están tocando la misma pantalla cuando uno termine antes que el otro va a subir su código y cuando el segundo vaya subir su código va a decir mira no lo puedo unir automáticamente porque hay cambios en este archivo que vos no tenías Entonces ahí es cuando
tenemos que o sea existe ese conflicto bajamos el código vemos Que cambio hizo nuestro compañero lo unimos con nuestro código y recién ahí hacemos el merch eso es conflicto simplemente cuando escuchen la palabra conflict o conflicto es porque los códigos van a colisionar entre ellos no después tenemos lo que es Remote que puede ser el remote o local o remoto local que hace referencia si el repositorio está subido en algún lado como por ejemplo en github gitlab etcétera Eso quiere decir remoto o local que lo tengo en mi computadora después tenemos El Comando checkout que
es algo que me olvidé de mencionar git se maneja con línea de comandos nosotros vamos a utilizar github desktop que es una herramienta que tiene una ui que nos va a permitir hacer todo con un par de clics es mucho más sencillo por eso se lo dije al principio que como para empezar esta buenísimo pero sí después vamos a ver cómo hacerlo con línea de comando y El Comando checkout sirve para navegar entre ramas simplemente para eso después tenemos lo que es el Head que es un puntero que indica la última posición en la que
estás trabajando en tu repositorio y suele apuntar Por lo general al último comit de la rama activa Y por último tenemos lo que es el stag inara que es como un área de preparación donde se colocan los cambios que uno va haciendo y que se van a subir en el próximo comit bueno ahora sí vamos a empezar con la parte divertida toda la parte práctica Esta es la página de github Yo estoy en el perfil de de undercode con todos sus repositorios pero en caso de que no estén logueados porque yo acá estoy logueado en
caso de que no estén logueado lo van a ver algo así es necesario tener cuenta para poder utilizar esto y acá eh Nada la gente puede subir sus códigos sus repositorios y demás lo pueden poner de forma pública o de forma Privada de forma Pública para que lo pueda ver cualquier persona y de forma privada para nada solamente gente que ustedes quieran que tenga acceso a ese repositorio lo que tiene bueno es que nada pueden buscar en todo en todo github distintos códigos por ejemplo ustedes quieren hacer No sé algún framework automation con no sé
python o con Java ponen automation Java y fíjense que acá nos va a tirar muchísimos repositorios de eh framework que que nada que funcionen con con Java fíjense acá que dice automation framework selenium yo puedo entrar acá y eh Nada Acá tengo mucha información sobre este este repositorio de código no volvemos otra vez al de undercode eh Nada el perfil Cada persona tiene su perfil Este es el de El de nuestra comunidad acá nos dice cuánta gente Eh los Está siguiendo eh cuánto está siguiendo esta persona acá podemos ver las contribuciones que va haciendo por
semana y por mes entonces acá podemos ver Cada cuánto sube repositorio código a los repositorios y podemos entrar algún repo en especial donde está el código Eh Esto es muy importante ver la cantidad de estrellas si ustedes van a bajar el código Ver Cuántas estrellas tiene Mientras más estrellas obviamente mejor porque es como que la gente lo va rankeando eso es bastante útil después bueno acá tenemos las distintas ramas acá solamente tienen la main que tiene todo este código pero en caso de que tuviese varias ramas Yo podría cambiarlo desde acá e ir viendo Qué
código tiene cada rama acá podemos ver qué lenguaje utiliza F que acá utiliza Java y tiene gerkin también qué más bueno github tiene como este apartado de isu en caso de que ustedes con sus compañ trabajen con código demás ustedes pueden levantarle ticket o si ustedes nada quieren utilizar algún otro repositorio por ejemplo este mismo de underc Y ustedes de autocode perdón y ustedes encuentran algún inconveniente algún ISO algún error lo que sea lo pueden reportar por acá ponen New issue y nada le ponen un título una descripción y lo suben para que el programador
después pueda ver todos los problemas que tiene que arreglar en su código no después tenemos la parte de action que es para ejecutar los test que esto lo podemos ver más adelante también si quieren e esto por ejemplo son ejecuciones que ha hecho el el creador y bueno acá podemos ver el el artifact con los reportes con todas las la ejecución podemos ver cómo salió la ejecución de las pruebas automatizadas y demás Pero eso lo vamos a dejar para más adelante básicamente quería recorrer un poco lo más importante para que ustedes pudiesen ver qué vamos
a hacer ahora vamos a clonar este repositorio que está de forma remota lo vamos a traer a mi PC local para ello voy a utilizar la herramienta llamada github desktop esa la pueden descargar desde la página de github simplemente lo descargan lo instalan y ya está eso es todo y después simplemente lo pueden abrir y se va a ver algo así obviamente para poderlo utilizar tienen que estar logueados yo acá ya estoy logueado así que cuando apenas ingresen les va a pedir Iniciar sesión después volvemos al repo y acá tenemos varias formas de clonarlo puedo
hacerlo con la URL esta que tenemos acá y por línea de comandos con github desktop que es lo que vamos a utilizar ahora o me puedo bajar el ZIP y me va a descargar vamos a ver acá descarga fíjense que me va a descargar un zip con todo el código fuente fíjense que los mismos archivos img crrs está todo Exactamente igual y ya lo tengo en mi PC y ya puedo empezar a trabajar acá como les dije yo lo lo vamos a hacer A través de github desktop Pero antes fíjense que me faltó mencionarlo recién
puedo navegar por el código desde github desde la página web y puedo ver todo el código fuente y en caso de que yo sea eh el dueño del repositorio directamente lo puedo editar desde acá eh Nada eso es otra particularidad que que me gusta mucho de de github en realidad lo tienen todos los los las páginas web esta para repositorio de código Eh bueno vamos a clonarlo vamos a abrir github desktop acá me va a decir si lo quiero abrir con la con la aplicación esta de acá le vamos a poner que sí y acá
me trae la URL del repositorio fíjense que dice github.com underc laabs y el nombre del del repo que es tal cual el que teníamos en la página de recién acá esto mismo que me está trayendo y me dice dónde lo quiero guardar vamos a guardarlo no sé en algún otro lado vamos a [Música] poner acá vamos a crear una que se llame autocode y acá dentro vamos a guardar todo el repo una vez que ya configuré estas dos cositas la URL que ya viene por default porque lo abrimos recién y la ubicación le ponemos clonar
y listo nos acabamos de clonar todo el repositorio Ya lo tenemos en nuestra PC qué sigue ahora Bueno podemos Navegar hasta esa ubicación vamos a no tengo en otra pantalla ahí lo ahí lo muestro acá autocode ya tengo el repositorio acá y sig ahora Bueno vamos a abrir el ID que es el ide bueno la herramienta con la que vamos a trabajar el código en este caso voy a utilizar intelij lo abrimos y vamos a navegar hasta esa carpeta jugar mi autocode fíjense que tengo que cliquear la carpeta que tiene el simbolito Ese negro í
abajo no le ponemos ok confiamos en el proyecto y ahora me lo va a abrir fíjense que acá ya tengo todo el código de vuelta img crc y toda la las carpetitas que que tiene el rep apenas lo abramos demora un poquitito en cargar todas las librerías y todas las dependencias que requiere se carga acá abajo en la en La Barrita una vez que termina ya tenemos todo el código el mismo código que teníamos ahí en el rep Sí esa es la parte uno digamos la bajar y clonar noos el el repo ahora vamos a
ver cómo crear un repositorio propio en github y subir el código en el que estamos trabajando para tenerlo ya en nuestro en nuestro repo no así que nos vamos a venir a gi.com ponemos nuevo tenemos que estar logueado no AC vamos a poner un un nombre vamos a poner quarm me dice está disponible vamos a dejar público y lo creamos ya quedó creado acá ahora con nuestro github desktop tenemos que apuntar a ese repositorio vamos a poner podemos clonarlo O sea hay varias formas de hacerlo No acá vamos a ponerle vamos a buscar ese mismo
tarmi y le vamos que lo guarda acá en tarmi en en este directorio y me lo está clonando si yo me vengo a donde se guardó fíjense que este fue el que me bajé recién y este es el nuevo de ahora simplemente lo que puedo hacer es copiar todo este contenido lo volvemos atrás lo pegamos acá y en github desktop me va a traer todos los archivos que me dice que se van a subir a ese repositorio eh simplemente le ponemos publicar Branch fíjense que esto está vacío le damos publicar Ah perdón acá tenemos que
hacer el comit Vamos a ponerle no s First commit podemos ponerle algún comentario lo que sea poner que para el video Dei y ponemos comit y ahora s lo publicamos ahí se está subiendo y listo si yo ahora refresco la página ya está subido en mi repositorio en mi usuario el First comit este que acabo de subir ahora ven si me voy a mi perfil fíjense que hoy día ya subí varias cosas est fueron todos los movimientos que estuve haciendo el día de hoy Ven y acá lo otro que podemos hacer es subir alg un
cambio como para que vean cómo funciona pero para ello tengo que cambiar esto Tengo que abrir el nuevo proyecto en la nueva la nueva ruta que es este de acá abajo ahí está hay que esperar a que a que termine de cargar las dependenci Ahí está bien y acá por ejemplo vamos a borrar una línea cualquiera vamos a borrar esta línea guardamos y volvemos al github desktop y fíjense que acá ya me en el stage Area que es este de acá que son los cambios que voy a subir me dice qué fue lo que pasó
Me dice que esto que está en rojo quiere decir que esta línea se quitó y lo que está en verde que esto es lo que se agregó si yo agrego más líneas me van a aparecer más líneas verdes por ejemplo esto así obviamente no no va a andar pero para que ustedes vean que en verde aparece lo que se agregó y en rojo lo que se quitó si esto está OK le pongo un nombre no sé esto Debería ser no sé no sé el ID lo que sea le ponemos comite y ahora sí el Push
para que se suba Ahí está y si me vengo otra vez al github y le damos f5 fíjense que los cambios de recién del First commit fueron hace 2 minutos y Este otro es de ahora lo otro que podemos ver Es las ramas fíjense que este no tiene ramas solamente la main Yo acá con github puedo crear distintas distintos branches y trabajar en esos branches puedo crear este Branch puedo publicarlo porque va a estar vacío obviamente Ahí está y si yo me vengo ahora acá acá no tengo nada vamos a refrescar y ya aparece este
test Branch con el código y ya puedo empezar a trabajar en ese test Branch por ejemplo vamos a volverlo a la normalidad vamos a borrar todo esto así me vuelve otra vez acá me dice que bueno lo que está en rojo se quitó que se agregó esto y yo acá le puedo poner no fix Bag comiteo y lo voy a pushear al test Branch y listo si me vuelvo otra vez acá fíjense que el test Branch ya tiene ese cambio del fix Back ahora quedó todo solucionado y me aparece esto nuevo que me dice que
puedo comparar y hacer un p request que es esto sirve porque como vimos recién nosotros teníamos la rama Main o la Master que es la principal y nosotros podemos ir haciendo distintas ramas en este caso lo que me está sugiriendo acá github es poder poner estos cambios que hice En este test Branch al Main ven yo acá lo puedo solicitar acá si tengo otros compañeros Depende como esto esté configurado e mis compañeros me lo tienen que aprobar en este caso va a ser todo automático me lo voy a aprobar yo solo y acá como como
pueden ver dicen que no hay ningún conflicto al tratar de mergear estas estas dos ramas y lo Confirmamos listo y ahora lo que yo tenía en la rama esa de Test ya lo tengo también en el Main ven fíjense que ahora en el Main me aparece el fix Back que ese fix Back venía del test Branch Y esto es un poco lo que yo les decía que nos permite hacer controles de versiones ver si tiene conflictos y acá puedo ir teniendo todo el historial de ramas ver Qué cambios hicieron en cada rama fíjense que acá
puedo ver que este fue el último cambio que se hizo yo puedo ir navegando y y puedo ver De dónde viene fíjense acá dice fix Back y puedo ver cuál fue el cambio que se hizo le puedo dejar comentarios acá la verdad que es una herramienta espectacular muy completa y muy útil y bueno bueno Esto es todo por ahora espero que les haya gustado Y si fue así que dejen un comentario para que podamos hacer una segunda parte donde podemos ver cómo utilizar git desde la consola noos utilizamos ahora github desktop que con un par
de clicks podíamos clonar repositorios subir merger código y demás eh pero también se puede hacer desde la consola que es muy útil y así como existe github desktop existen otras herramientas que también son igual de de útiles y muy sencillas de utilizar como por ejemplo sce 3 que se utiliza bastante eh y demás e así que bueno Espero que les haya gustado y nos vemos en el próximo video [Música] [Aplausos]