Platzi
Platzi

¡Invierte en ti y celebremos! Adquiere un plan Expert o Expert+ a precio especial.

Antes: $349
$259
Currency
Antes: $349
Ahorras: $90
COMIENZA AHORA
Termina en: 17D : 10H : 28M : 38S

Debes tener cuenta en Platzi

Para ver esta clase abierta debes iniciar sesión

¿Qué es un Branch (rama) y cómo funciona un Merge en Git?11/43

Git es una base de datos muy precisa con todos los cambios y crecimiento que ha tenido nuestro proyecto. Los commits son la única forma de tener un registro de los cambios. Pero las ramas amplifican mucho más el potencial de Git.

Todos los commits se aplican sobre una rama. Por defecto, siempre empezamos en la rama master (pero puedes cambiarle el nombre si no te gusta) y creamos nuevas ramas, a partir de esta, para crear flujos de trabajo independientes.

Crear una nueva rama se trata de copiar un commit (de cualquier rama), pasarlo a otro lado (a otra rama) y continuar el trabajo de una parte específica de nuestro proyecto sin afectar el flujo de trabajo principal (que continúa en la rama master o la rama principal).

Los equipos de desarrollo tienen un estándar: Todo lo que esté en la rama master va a producción, las nuevas features, características y experimentos van en una rama “development” (para unirse a master cuando estén definitivamente listas) y los issues o errores se solucionan en una rama “hotfix” para unirse a master tan pronto como sea posible.

Crear una nueva rama lo conocemos como Checkout. Unir dos ramas lo conocemos como Merge.

Podemos crear todas las ramas y commits que queramos. De hecho, podemos aprovechar el registro de cambios de Git para crear ramas, traer versiones viejas del código, arreglarlas y combinarlas de nuevo para mejorar el proyecto.

Solo ten en cuenta que combinar estas ramas (sí, hacer “merge”) puede generar conflictos. Algunos archivos pueden ser diferentes en ambas ramas. Git es muy inteligente y puede intentar unir estos cambios automáticamente, pero no siempre funciona. En algunos casos, somos nosotros los que debemos resolver estos conflictos “a mano”.

Es muy importante tener un manejo ordenado de nuestro repositorio y para esto existe algo que se llama GitFlow.

GitFlow es una una guía que nos da cierto estándares para manejar la ramificación de nuestros proyectos, es decir, que ramas debemos tener, cuándo y de dónde debemos crear nuevas ramas, cómo debemos nombrar dichas ramas y muchos otros conceptos que nos ayudaran a manejar mucho mejor nuestro repositorio; siendo esto muy importante cuando trabajamos en conjunto con varios desarrolladores.

Algunos enlaces:
Gitflow Workflow

Git-Flow Cheatsheet

Esto es lo que entendi de la clase, espero les ayude 😄
Branch y Checkout.png

GIT_Branch.png

Como trabajar con Git Flow
Git flow workflow - Historical Branches

Feature Branches

Release Branches

Hotfix Branches

Fuente: . Atlassian

Usar git es cómo ser un Dr. Strange del desarrollo. Movernos entre branches es como moverse en realidades alternas. Hacer merge es unir esas realidades.

Ramas base de un proyecto en git
BRANCHS.png

Compañeros, les comparto un poco de lo visto en clase + mis notas escritas, espero les sirva…#NuncaParemosdeAprender - Compartamos +Y+Conocimiento

Conceptos Básicos:

Un Bug es un error en programación que ocasiona un resultado inseperado.

Merge: Se da cuando los cambios se unen en una rama corta con respecto a la otra.

![](Rama y Merge en GIT.PNG

| Apuntes|

07.Branch_rama.png
im1.png

Resumen de clase:
Master: Esta es la rama donde se inicia siempre por defecto (se le puede asignar cualquier nombre), a partir de esta rama se crean todas las ramas, en esta rama estan todos los cambios de tus archivos.

Commit: Cada vez que haces una nueva rama lo único que se hace es que copias un commit, que pasa a la rama de a lado, en la cual puedes continuar trabajando sin afectar el flujo de trabajo principal que esta en la rama master.

Development (o rama experimental): Esta es una versión copiada de la rama master, donde experimentás, observás características, featueres entre otros. Para finalmente unirlas a la rama master cuando estén listas.

Bugfixing o Hotfix: Esta rama se encarga de repara cualquier bug, issues (errores) o fallas que surjan en la rama experimental, aquí puedes hacer cualquier clase de cambios para después probarlo en tu rama master.

Checkout: Crea una nueva rama.

Merge: Es una brecha que une dos ramas

Head: Es a donde llevás todo cuando ya tienes tu versión final.

🚨🚨🚨 IMPORTANTE! 🚨🚨🚨
A partir del 1 de Octubre del 2020 en los nuevos repositorios la rama principal deja de llamarse MASTER. Ahora es nombrada como MAIN.

Más detalles acá: https://github.com/github/renaming

Resumen de la clase
Captura de pantalla 2020-01-01 16:33:11.png

Hola compañeros, para todos aquellos que esten tomando el curso despues de octubre del 2020, les cuento que debido a una actualización de GitHub, la rama “Master” ha cambiado su nombre por defecto a “Main”. Les informo para que no se lleven sorpresas mas adelante. Un saludo y recuerden nunca parar de aprender ❤️.

Aqui hay una guia que use para entender git por primera vez… sinceramente les recomiendo que la lean…
https://rogerdudler.github.io/git-guide/index.es.html

Aquí hay una página web para aprender de forma interactiva todo lo relacionado con git.

Estoy volviendo a ver el curso. Para repasar y tomar notas con Notion

Wait... Entonces el Master existe en el entorno local y el servidor. ¿Correcto? ... Es decir hay un local master y un remote master.

La rama/repositorio por defecto de git es master
Cada commit es una versión en git, y cada versión tiene su código identificador
Crear ramas con el comando checkout
Unir ramas a master con el comando merge

Con la práctica te convertirás en un profesional destacado

¡Atómico! A-tó-mi-co.

Estándar común entre desarrolladores de git:

  1. Master – Para producción.
  2. Feature – Para las nuevas características.
  3. Development – Para las pruebas o experimentos.
  4. Hotfix – Para solucionar los errores y unirlas a la rama master.
Qué es un branch (rama ) y como funciona un Merge en Git_.png

He quedado enramada 😃

Yo lo veo así, como una forma de entenderlo mejor:

  • Nueva tarea: nueva rama
  • cada paso para completar la tarea: es un commit
  • unir tu tarea completada con las tareas de los demas: merge

3 ramas a considerar en los proyectos:

  • Master
  • Development (Desarrollo)
  • Hotfixing (bugfixing)

Buena explicación.

Me encanta el formato de explicación, los detalles y la forma de expresarse John Freddy Vega

Freddy tienes un don para explicar las cosas, Excelente! 😄

Untitled.png

Git checkout NO es para crear ramas! es para moverte entre ramas
la creacion de una rama es Git branch + nombre de la rama!

pd: lo digo porque en la descripcion freddy hace referencia a que checkout es para crear una nueva rama!

espero su feedback ❤️

Es una herramienta obligatoria entonces de aprender

📝 Las ramas nos permiten llevar un mejor control del código. Crea un nuevo camino de cara a la evolución del código, en paralelo a otras ramas que se puedan generar.

Nombres recomendados para ramas:

Experimentos ratos => development
Bugs => hotfix

Branch y Merge en Git

En cada repositorio de git vamos a tener una rama (branch) llamada
Master esta rama tiene el resultado final de nuestro proyecto (es decir todos los commit)
En git podemos agregar ramas que no necesariamente sus commits van a ser enviados a Master.
Podriamos tener una rama llamada Development donde tomamos una version especifica del Master para poder trabajar sobre ella en un proyecto que aun no sabemos si lo vamos a unir al proyecto final.

Al momento de unir nuestra rama Development con la rama Master debemos de hacer un MERGE que crea una nueva version final uniendo todo.

NOTA Puede haber problemas de compatibilidad entre una rama y la otra.

Mis apuntes
Una rama representa una línea independiente de desarrollo, es como crear un nuevo área de trabajo con su área de ensayo y su historial. Los nuevos commits se registrarán de forma independiente en el historial la rama, lo que se conoce como forks en el historial del proyecto (término muy empleado en github).

Listar, crear y manejar ramas, git branch
git branch
Este comando lista las ramas locales que existen. La rama en la que estás trabajando actualmente se señala con un asterisco *. La rama master es la rama con la que se comienza en cualquier proyecto, y es la que se utiliza como rama principal donde se encuentra el proyecto en su estado final.

git branch [rama]
Este comando crea una rama con el nombre que elijas.

git checkout experimento
Si hemos nombrado a la rama “experimento”, este comando nos sitúa en esa rama.

Si estábamos en la rama master, teníamos archivos modificados sin añadir o añadidos en el área de ensayo, y nos situamos en la rama experimento con git checkout, éstos cambios se verán en la rama experimento. Hasta que no se haga un commit, los cambios no pertenecerán a ninguna rama.

git branch -v
Este comando muestra el último commit en cada rama.

git checkout -b [rama]
Este código crea una rama y hace checkout directamente en la misma. Es el código que se suele usar ya que cuando se crea una rama normalmente se suele hacer checkout en ella.

Es bastante frecuente crear una rama, hacer los cambios que sean necesarios, unirla a una rama principal y después eliminar la rama que se había creado. De esta forma si has estado haciendo cambios que realmente no han resultado ser buenos puedes deshacerte de la rama con facilidad.

git branch -d [rama]
Este código elimina una rama.

Unir una rama a la rama actual, git merge
Una vez que has trabajado en una rama, lo normal es querer incorporar los cambios a la rama principal. Para unir una rama a la actual se utiliza el siguiente comando:

git merge
Cuando sólo se han añadido o eliminado archivos en una rama, es fácil unirla a la principal. El resultado simplemente será la suma o resta de esos archivos en la principal. Cuando se hacen modificaciones en archivos, incluyendo cambios en los nombres de los archivos, git detecta esos cambios y los adapta automáticamente, pero a veces surgen conflictos.

espero les pueda servir mis apuntes jejeje si hay errores me comentan 😃

En Learn Git Branching es posible practicar y aprender más sobre ramificación, chéquenlo… 😛

Hola compañeros, para los que se encuentren realizando este curso para despues de mediados de octubre del 2020, les cuento que debido a una actualización de Git, la rama “Master” ha cambiado su nombre por defecto a “Main”. Les aviso para que no se lleven sorpresas creando repositorios mas adelante. Un saludo y #NuncaParenDeAprender ❤️

Como recomendación, es importante que nunca se trabaje o se hagan cambios directamente sobre la rama master, en la rama master solo debería existir la versión mas estable de nuestro proyecto o (lo que está en producción). Mientras estemos agregando nuevas caracteristicas, todo debería estar en una rama de desarrollo o development

Si en el proceso de “Merge” tengo 2 cambios diferentes en la misma línea entre las ramas como se elige que cambio dejar?

Es posible hacer un merge entre más de 2 ramas?

git merge => Mezclar Ramas (En escencia)
Captura.jpg

Muy buena explicación, aunque Freddier debe mejorar su técnica de dibujo jaja

GIT FLOW ❤️

Les dejo un tutorial de Atlassian en la que profundizan sobre los distintos tipos de flujo que podemos usar con Git:

https://www.atlassian.com/es/git/tutorials/comparing-workflows

Git-merge Une dos o más historiales de desarrollo.

merge git.jpg

¿Qué es un Branch (rama) y cómo funciona un Merge en Git?
Git es una base de datos muy precisa con todos los cambios y crecimiento que ha tenido nuestro proyecto. Los commits son la única forma de tener un registro de los cambios. Pero las ramas amplifican mucho más el potencial de Git.

Todos los commits se aplican sobre una rama. Por defecto, siempre empezamos en la rama master (pero puedes cambiarle el nombre si no te gusta) y creamos nuevas ramas, a partir de esta, para crear flujos de trabajo independientes.

Crear una nueva rama se trata de copiar un commit (de cualquier rama), pasarlo a otro lado (a otra rama) y continuar el trabajo de una parte específica de nuestro proyecto sin afectar el flujo de trabajo principal (que continúa en la rama master o la rama principal).

Los equipos de desarrollo tienen un estándar: Todo lo que esté en la rama master va a producción, las nuevas features, características y experimentos van en una rama “development” (para unirse a master cuando estén definitivamente listas) y los issues o errores se solucionan en una rama “hotfix” para unirse a master tan pronto como sea posible.

Crear una nueva rama lo conocemos como Checkout. Unir dos ramas lo conocemos como Merge.

Podemos crear todas las ramas y commits que queramos. De hecho, podemos aprovechar el registro de cambios de Git para crear ramas, traer versiones viejas del código, arreglarlas y combinarlas de nuevo para mejorar el proyecto.

Solo ten en cuenta que combinar estas ramas (sí, hacer “merge”) puede generar conflictos. Algunos archivos pueden ser diferentes en ambas ramas. Git es muy inteligente y puede intentar unir estos cambios automáticamente, pero no siempre funciona. En algunos casos, somos nosotros los que debemos resolver estos conflictos “a mano”.

Como recomendación personal, revisen periódicamente sus repositorios, me he topado con repositorios internos donde tenemos mas de 60 ramas de las cuales solo el 5 o 10% son útiles, el resto son funcionalidades que se abandonaron o que se rechazaron,

git anotation2.png
merge.JPG

Buena, creo que al fin la entendi! se me habia hecho un poco dificil, pero ya esta!

git es amor

interesante me queda la duda si dos ramas modifican una misma parte, como se unirian??

**Ramas: **
Master: Rama principal de nuestro repositorio (Donde estan las versiones 1, 2, 3… actual).

Nombres comunes para una rama en la que arreglamos fallos: bugfixing/hotfix.

**Ramas: **
Master: Rama principal de nuestro repositorio (Donde estan las versiones 1, 2, 3… actual).

Nombres comunes para una rama en la que arreglamos fallos: bugfixing/hotfix.

Cuando queremos fusionar los cambios de una rama con la rama master (u otra rama):

git merge [nombreDeLaRama]

Llevo un tiempo utilizando Git en distintos proyectos, pero en ningún momento me había detenido a estructurar su funcionamiento, definitivamente es impresionante!

Este flow de git me ha ayudado mucho a como moverme entre ramas. Este tema ha sido de muchas discuciones; ya que, es aquí donde puedes dañar tu codigo.
https://nvie.com/posts/a-successful-git-branching-model/

Leer también el libro que recomienda al principio me está ayudando mucho, así se puede profundizar más.

Cásate conmigo Freddy. ¡Excelente explicación!

Es excelente la forma en la que se explica este tema, en realidad en una empresa las ramas (la mayoría de las veces) se llaman así como menciona Freddy). Por acá dejó links de la documentación oficial de Git donde se hablan sobre estos temas.
¿Qué es una rama?
Procedimientos básicos para ramificar y fusionar

Commit

Un commit es un cambio rastreable (de 1 o varios archivos), es confirmar un conjunto de cambios provisionales de forma permanente y tenemos el superpoder de ponerle nombre a este cambio.

La historia de tu desarrollo se van guardando mediante commits, ya que cada cambio confirmado tiene modificaciones importantes hasta llegar al cambio actual.

Para hacer un commit, es muy sencillo, tenemos que tener agregado en el staging (git add -A) y usar el comando commit

Git commit -m 'commit'

Si trabajamos en algo experimental o que no queremos que sea parte del flujo principal, podemos hacer una nueva rama (branch), recordemos que la rama principal suela llamarse master, por lo tanto ésta branch nueva tendrá su propia historia (posterior al punto donde se creó).

Para crear una rama nueva con la información de la rama actual usamos el comando

git checkout -b nombre-del-branch

Si los cambios que realizaste en tu rama nueva son un avance en el código, puedes fusionarlo a la rama master (o a otra), para ésto tienes que cambiarte a master y hacer el comando es merge

git checkout master # nos cambiamos a la rama master
git merge rama-nueva # Fusionamos los cambios de la 'rama-nueva' en master

Muy bien explicado!

Si freddy diera todos los cursos…

unnamed.jpg

Ramas:

  • Herramienta de git para tener diferentes flujos de trabajo y luego fucionarlos.
  • Las ramas se crean copiando un commit anterior (checkout) para luego generar un nuevo flujo sobre este.
  • Fucionar dos ramas (merge) puede generar conflictos: diferencias entre ambos archivos.
  • Algunas ramas usuales son:
    hotfix: rama de solucion de errores
    development: rama de experimentos

conflicto: Cuando al hacer un merge los cambios de una rama rompan los cambios de la otra.

Screenshot_1.png

bug = bəɡ 😉

Definitivamente es muy importante practicar, practicar y practicar. Como dice Freddy, solo con ver el video no es suficiente.

Master actualmente en algunas versiones actualizadas de git se llama main.

Realice esto según lo que entendí.
Pd: Acepto correcciones.
V2 (1).png

Cada versión es memorizada por el commit, es decir que cada commit es una versión de nuestro archivo.

Puedes practicar el uso de las ramas haciendo modificaciones a los proyectos de los cursos, esto te servirá de práctica. Al final puedes tener tantas variantes como ramas en tu repositorio, tu decidirás si quieres hacerle merge a éstas o dejarlas tal cual.

hace meses estaba cursando Data Sciente pero me costaba entender, durante meses estuve plantando mis bases cursando comandos, introduccion a la informatica, etc. y ahora entiendo todo tan pero tan bien que incluso ahora todo lo hago con comandos en linux ubuntu.

Este articulo interesante muestra algunas estrategias para manejo de ramas y las compara entre ellas https://dev.to/arbitrarybytes/comparing-git-branching-strategies-dl4

Les recomiendo guardar esta clase para un futuro, aqui se habla del famoso y util GitFlow.

La convención de llamar a “Master” a la rama principal del proyecto cambió hace poco, ahora se le llama “Main”

Los hotfix o cambios en caliente te realizan una copia de la rama de producción (comúnmente la rama es master) y a partir de ahí realizar los cambios, al finalizar tus cambios, finalizas el hotfix y los cambios se mezclan en la rama de producción y en la rama de desarrollo (master, develop) de esta manera se garantiza que se corrige el problema en producción y hacia el futuro dado que en algún momento lo que este en la rama de desarrollo saldrá a producción.
Te invito a revisar que son los flujos de trabajo en git:

git flow init -f

Donde tendrás que definir cual es la rama que tienes para producción cual para desarrollo, cual para nuevas características, cual para los cambios en calientes, etc.
https://readthedocs.org/projects/git-flow/downloads/pdf/latest/
https://www.atlassian.com/es/git/tutorials/comparing-workflows/gitflow-workflow

Branch-Merge.png

Master actualmente ya no es ni debe ser Master debido a los términos raciales que se utilizaban, y desde el #BlackLivesMatter la rama Master cambió a ser la rama Main.

Cambio de Master a Main

Voy a hacer de cuenta que los branches o ramas en el sistema de control de versiones de Git, es como una línea de tiempo en dónde cada suceso va quedando “guardado” en su línea de tiempo (dicha línea de tiempo son los denominados branches).

Si ese “alguien” le da por hacer modificaciones al código, se crea un branch paralelo para que haga sus modificaciones sin afectar su línea original.

merge.jpg

Para todos los que ven este curso en 2020, GitHub y los encargados de Git, inspirado por el movimiento #blacklivesmatter cambiaran la rama master por main

¿cual es la diferencia entre checkaut y commint?

“master siempre es master”. Hasta que el 2020 atacó y pasó a ser “main”.

main

Hey muchachos recuerden que hubo un cambio del nombre por defecto de la rama principal

Paso de “master” a “main”

aca pueden ver el detalle del tema

Resumen de palabras para trabajar en equipo:

Branch Master: es la rama principal, ““la primera””.
Branch: (rama) son todasa las ramas que tienes.
Merge: (unir) es unir un commit con otro commint, pueden ser de diferentes versiones.
Cheout: (revisar) es crear una rama nueva.
Hotfix: (revisión) es revisar lo mas rapido posible porque hay que unirla a un Brach.

Espero les sea util: 😎💚💚

¿Qué es un Branch (rama) y cómo funciona un Merge en Git?
Por defecto el repositorio se encuentra en la rama Master, y cada vez que se hace un commit, se crea una nueva versión en el repositorio.

Imagina que en la version 3, decidiste realizar experimentos por tu cuenta en el código, para esto se crea una rama nueva, en este caso el llamaremos Experimentos, donde basicamente copias una version (actual o anterior) de la rama Master y la llevas a la rama Experimentos, ahi continuas trabajando y haciendo commits en esa misma rama.

Todo lo que existe en esa rama es completamente independiente y diferente de la rama Master.

Digamos que en la versión actual de Master encontraste un bug, y te obliga a modificar cosas. Para esto creas una rama nueva llamada Bugfixing, donde copias la ultima versión, en la que aprecio el bug.

Ahi realizas los cambios necesarios y llevas los cambios a la rama Master.
El llevar los cambios de una rama a otra se conoce como un Merge.

Supongamos que seguiste con la rama Experimentos y ahora estás listo para llevar esos cambios a la rama Master. Para esto se vuelve a hacer un Merge entre la rama Experimentos y Master.

No solo se pueden realizar merge entre las distintas ramas, tambien es posible traer versiones anteriores de otras ramas, realizar cambios, volver a hacer un Merge con otra rama, etc.

Normalmente en la industria, la rama Experimentos es llamada Development, y la rama Bugfixing es llamada Hotfix. Master siempre es Master.

También es posible que a la hora de hacer un Merge, haya archivos que rompan otros archivos, esto es conocido como un conflicto.

Apuntes del curso 👉🏻 acá
Apuntes de la clase 👇🏻Screen Shot 2020-11-13 at 3.07.39 AM.png

Desde octubre del 2020 ahora la rama master tiene como nuevo nombre main.

  • Lo único que cambia es el nombre y tener en cuenta el nombre en los comandos
  • Dadle ❤️ para que todos se enteren y no se vayan a perder 😃
  • Suerte 😄

Esto se podría explicar bien con la idea de los multuniversos de Marvel.

Veo el potencial de git

Genial

Clarísima la clase Freddy. Por fin entendí ramas y merge. Creo que esta clase se debería liberar. Ayudarìa a muchos!

Una consulta, cuando se trabaja en equipo ¿es malo que cada quien tenga su rama de trabajo?

Git es muy interesante para el desarrollo!!

WOW!! Git es un lio

Ramas:
master es donde se guardan las versiones con commit hasta llegar a la final.
developmen es donde se realizan versiones experimentales.
hotfix es donde se solucionan bugs

Mi resumen:
Por defecto estamos en la rama master que es donde se guardan los cambios de mis archivos y donde se crean las diferentes versiones a medida que aplicamos commit.
Rama Development: consiste en copiar la versión que deseamos (actual o anterior) de la rama master con un nombre diferente, para realizar pruebas en una rama diferente la cual a medida que le apliquemos commit generará sus propias versiones.
Si tenemos que solucionar problemas de la rama actual (master), como un bug, debemos crear una rama especial llamada hotfix y en esta rama realizamos los cambios para posteriormente probarlos con la rama actual, esa prueba o esa conexión con la rama actual es conocida como un merge.
En definitiva el merge nos permite traer los cambios realizados en otras ramas a la versión actual.
Podemos tener tantas ramas y repositorios como queramos.

Aqui todo el video resumido 😃 :
Ramas son flujos de trabajo, para hacer modificaciones aparte de la rama principal “master” para luego combinarlas de nuevo y ese proceso de unir dos ramas se conoce como Merge.

Excelente explicación, se me hizo fácil entenderlo usando como analogía la paradoja del viaje en el tiempo y realidades alternas jaja

Asombroso!

Master: Inicio del archivo, aquí están todas las versiones subidas por el commit
Experimental: o Development. Cuando realizas operaciones extrañas y esta rama poseerá cambios totalmente diferentes a la rama master
Bug fixing: o Hot Fix. Es la rama de corrección, ocurre si existe algún bug en la rama master, una vez solucionado este debe unirse una rama con la otra (llamada merge)

¿Qué es un Branch(Rama)?

Por defecto tenemos una rama que se llama Master en esta rama se guardan las versiones de los archivos que subimos al repositorio a medida que hacemos un Commit

También podemos tener ramas adicionales como una rama “Experimental” en donde podemos copiar la información de actual o de un punto anterior de la rama original Master en donde podremos hacer cambios y experimentar sin afectar directamente la rama original.

Si en algún momento se genera algún bug en la rama Master se puede crear una nueva rama que puede llamarse "“HotFix” para realizar las tareas de arreglo del bug.
¿Qué es un merge?

Imaginemos que durante la reparación del bug en la rama Hotfix encontrado en la versión actual de la rama Master se logra solucionar le problema para poder unir nuevamente los cambios que solucionan el bug actualizados en la rama HotFix a la rama Master, se realiza un merge que une ambas ramas, creando un nuevo punto en la rama Master en donde se juntan las correcciones para eliminar el bug.

Es muy importante tener un manejo ordenado de nuestro repositorio y para esto existe algo que se llama GitFlow.

GitFlow es una una guía que nos da cierto estándares para manejar la ramificación de nuestros proyectos, es decir, que ramas debemos tener, cuándo y de dónde debemos crear nuevas ramas, cómo debemos nombrar dichas ramas y muchos otros conceptos que nos ayudaran a manejar mucho mejor nuestro repositorio; siendo esto muy importante cuando trabajamos en conjunto con varios desarrolladores.

Algunos enlaces:
Gitflow Workflow

Git-Flow Cheatsheet

Esto es lo que entendi de la clase, espero les ayude 😄
Branch y Checkout.png

GIT_Branch.png

Como trabajar con Git Flow
Git flow workflow - Historical Branches

Feature Branches

Release Branches

Hotfix Branches

Fuente: . Atlassian

Usar git es cómo ser un Dr. Strange del desarrollo. Movernos entre branches es como moverse en realidades alternas. Hacer merge es unir esas realidades.

Ramas base de un proyecto en git
BRANCHS.png

Compañeros, les comparto un poco de lo visto en clase + mis notas escritas, espero les sirva…#NuncaParemosdeAprender - Compartamos +Y+Conocimiento

Conceptos Básicos:

Un Bug es un error en programación que ocasiona un resultado inseperado.

Merge: Se da cuando los cambios se unen en una rama corta con respecto a la otra.

![](Rama y Merge en GIT.PNG

| Apuntes|

07.Branch_rama.png
im1.png

Resumen de clase:
Master: Esta es la rama donde se inicia siempre por defecto (se le puede asignar cualquier nombre), a partir de esta rama se crean todas las ramas, en esta rama estan todos los cambios de tus archivos.

Commit: Cada vez que haces una nueva rama lo único que se hace es que copias un commit, que pasa a la rama de a lado, en la cual puedes continuar trabajando sin afectar el flujo de trabajo principal que esta en la rama master.

Development (o rama experimental): Esta es una versión copiada de la rama master, donde experimentás, observás características, featueres entre otros. Para finalmente unirlas a la rama master cuando estén listas.

Bugfixing o Hotfix: Esta rama se encarga de repara cualquier bug, issues (errores) o fallas que surjan en la rama experimental, aquí puedes hacer cualquier clase de cambios para después probarlo en tu rama master.

Checkout: Crea una nueva rama.

Merge: Es una brecha que une dos ramas

Head: Es a donde llevás todo cuando ya tienes tu versión final.

🚨🚨🚨 IMPORTANTE! 🚨🚨🚨
A partir del 1 de Octubre del 2020 en los nuevos repositorios la rama principal deja de llamarse MASTER. Ahora es nombrada como MAIN.

Más detalles acá: https://github.com/github/renaming

Resumen de la clase
Captura de pantalla 2020-01-01 16:33:11.png

Hola compañeros, para todos aquellos que esten tomando el curso despues de octubre del 2020, les cuento que debido a una actualización de GitHub, la rama “Master” ha cambiado su nombre por defecto a “Main”. Les informo para que no se lleven sorpresas mas adelante. Un saludo y recuerden nunca parar de aprender ❤️.

Aqui hay una guia que use para entender git por primera vez… sinceramente les recomiendo que la lean…
https://rogerdudler.github.io/git-guide/index.es.html

Aquí hay una página web para aprender de forma interactiva todo lo relacionado con git.

Estoy volviendo a ver el curso. Para repasar y tomar notas con Notion

Wait... Entonces el Master existe en el entorno local y el servidor. ¿Correcto? ... Es decir hay un local master y un remote master.

La rama/repositorio por defecto de git es master
Cada commit es una versión en git, y cada versión tiene su código identificador
Crear ramas con el comando checkout
Unir ramas a master con el comando merge

Con la práctica te convertirás en un profesional destacado

¡Atómico! A-tó-mi-co.

Estándar común entre desarrolladores de git:

  1. Master – Para producción.
  2. Feature – Para las nuevas características.
  3. Development – Para las pruebas o experimentos.
  4. Hotfix – Para solucionar los errores y unirlas a la rama master.
Qué es un branch (rama ) y como funciona un Merge en Git_.png

He quedado enramada 😃

Yo lo veo así, como una forma de entenderlo mejor:

  • Nueva tarea: nueva rama
  • cada paso para completar la tarea: es un commit
  • unir tu tarea completada con las tareas de los demas: merge

3 ramas a considerar en los proyectos:

  • Master
  • Development (Desarrollo)
  • Hotfixing (bugfixing)

Buena explicación.

Me encanta el formato de explicación, los detalles y la forma de expresarse John Freddy Vega

Freddy tienes un don para explicar las cosas, Excelente! 😄

Untitled.png

Git checkout NO es para crear ramas! es para moverte entre ramas
la creacion de una rama es Git branch + nombre de la rama!

pd: lo digo porque en la descripcion freddy hace referencia a que checkout es para crear una nueva rama!

espero su feedback ❤️

Es una herramienta obligatoria entonces de aprender

📝 Las ramas nos permiten llevar un mejor control del código. Crea un nuevo camino de cara a la evolución del código, en paralelo a otras ramas que se puedan generar.

Nombres recomendados para ramas:

Experimentos ratos => development
Bugs => hotfix

Branch y Merge en Git

En cada repositorio de git vamos a tener una rama (branch) llamada
Master esta rama tiene el resultado final de nuestro proyecto (es decir todos los commit)
En git podemos agregar ramas que no necesariamente sus commits van a ser enviados a Master.
Podriamos tener una rama llamada Development donde tomamos una version especifica del Master para poder trabajar sobre ella en un proyecto que aun no sabemos si lo vamos a unir al proyecto final.

Al momento de unir nuestra rama Development con la rama Master debemos de hacer un MERGE que crea una nueva version final uniendo todo.

NOTA Puede haber problemas de compatibilidad entre una rama y la otra.

Mis apuntes
Una rama representa una línea independiente de desarrollo, es como crear un nuevo área de trabajo con su área de ensayo y su historial. Los nuevos commits se registrarán de forma independiente en el historial la rama, lo que se conoce como forks en el historial del proyecto (término muy empleado en github).

Listar, crear y manejar ramas, git branch
git branch
Este comando lista las ramas locales que existen. La rama en la que estás trabajando actualmente se señala con un asterisco *. La rama master es la rama con la que se comienza en cualquier proyecto, y es la que se utiliza como rama principal donde se encuentra el proyecto en su estado final.

git branch [rama]
Este comando crea una rama con el nombre que elijas.

git checkout experimento
Si hemos nombrado a la rama “experimento”, este comando nos sitúa en esa rama.

Si estábamos en la rama master, teníamos archivos modificados sin añadir o añadidos en el área de ensayo, y nos situamos en la rama experimento con git checkout, éstos cambios se verán en la rama experimento. Hasta que no se haga un commit, los cambios no pertenecerán a ninguna rama.

git branch -v
Este comando muestra el último commit en cada rama.

git checkout -b [rama]
Este código crea una rama y hace checkout directamente en la misma. Es el código que se suele usar ya que cuando se crea una rama normalmente se suele hacer checkout en ella.

Es bastante frecuente crear una rama, hacer los cambios que sean necesarios, unirla a una rama principal y después eliminar la rama que se había creado. De esta forma si has estado haciendo cambios que realmente no han resultado ser buenos puedes deshacerte de la rama con facilidad.

git branch -d [rama]
Este código elimina una rama.

Unir una rama a la rama actual, git merge
Una vez que has trabajado en una rama, lo normal es querer incorporar los cambios a la rama principal. Para unir una rama a la actual se utiliza el siguiente comando:

git merge
Cuando sólo se han añadido o eliminado archivos en una rama, es fácil unirla a la principal. El resultado simplemente será la suma o resta de esos archivos en la principal. Cuando se hacen modificaciones en archivos, incluyendo cambios en los nombres de los archivos, git detecta esos cambios y los adapta automáticamente, pero a veces surgen conflictos.

espero les pueda servir mis apuntes jejeje si hay errores me comentan 😃

En Learn Git Branching es posible practicar y aprender más sobre ramificación, chéquenlo… 😛

Hola compañeros, para los que se encuentren realizando este curso para despues de mediados de octubre del 2020, les cuento que debido a una actualización de Git, la rama “Master” ha cambiado su nombre por defecto a “Main”. Les aviso para que no se lleven sorpresas creando repositorios mas adelante. Un saludo y #NuncaParenDeAprender ❤️

Como recomendación, es importante que nunca se trabaje o se hagan cambios directamente sobre la rama master, en la rama master solo debería existir la versión mas estable de nuestro proyecto o (lo que está en producción). Mientras estemos agregando nuevas caracteristicas, todo debería estar en una rama de desarrollo o development

Si en el proceso de “Merge” tengo 2 cambios diferentes en la misma línea entre las ramas como se elige que cambio dejar?

Es posible hacer un merge entre más de 2 ramas?

git merge => Mezclar Ramas (En escencia)
Captura.jpg

Muy buena explicación, aunque Freddier debe mejorar su técnica de dibujo jaja

GIT FLOW ❤️

Les dejo un tutorial de Atlassian en la que profundizan sobre los distintos tipos de flujo que podemos usar con Git:

https://www.atlassian.com/es/git/tutorials/comparing-workflows

Git-merge Une dos o más historiales de desarrollo.

merge git.jpg

¿Qué es un Branch (rama) y cómo funciona un Merge en Git?
Git es una base de datos muy precisa con todos los cambios y crecimiento que ha tenido nuestro proyecto. Los commits son la única forma de tener un registro de los cambios. Pero las ramas amplifican mucho más el potencial de Git.

Todos los commits se aplican sobre una rama. Por defecto, siempre empezamos en la rama master (pero puedes cambiarle el nombre si no te gusta) y creamos nuevas ramas, a partir de esta, para crear flujos de trabajo independientes.

Crear una nueva rama se trata de copiar un commit (de cualquier rama), pasarlo a otro lado (a otra rama) y continuar el trabajo de una parte específica de nuestro proyecto sin afectar el flujo de trabajo principal (que continúa en la rama master o la rama principal).

Los equipos de desarrollo tienen un estándar: Todo lo que esté en la rama master va a producción, las nuevas features, características y experimentos van en una rama “development” (para unirse a master cuando estén definitivamente listas) y los issues o errores se solucionan en una rama “hotfix” para unirse a master tan pronto como sea posible.

Crear una nueva rama lo conocemos como Checkout. Unir dos ramas lo conocemos como Merge.

Podemos crear todas las ramas y commits que queramos. De hecho, podemos aprovechar el registro de cambios de Git para crear ramas, traer versiones viejas del código, arreglarlas y combinarlas de nuevo para mejorar el proyecto.

Solo ten en cuenta que combinar estas ramas (sí, hacer “merge”) puede generar conflictos. Algunos archivos pueden ser diferentes en ambas ramas. Git es muy inteligente y puede intentar unir estos cambios automáticamente, pero no siempre funciona. En algunos casos, somos nosotros los que debemos resolver estos conflictos “a mano”.

Como recomendación personal, revisen periódicamente sus repositorios, me he topado con repositorios internos donde tenemos mas de 60 ramas de las cuales solo el 5 o 10% son útiles, el resto son funcionalidades que se abandonaron o que se rechazaron,

git anotation2.png
merge.JPG

Buena, creo que al fin la entendi! se me habia hecho un poco dificil, pero ya esta!

git es amor

interesante me queda la duda si dos ramas modifican una misma parte, como se unirian??

**Ramas: **
Master: Rama principal de nuestro repositorio (Donde estan las versiones 1, 2, 3… actual).

Nombres comunes para una rama en la que arreglamos fallos: bugfixing/hotfix.

**Ramas: **
Master: Rama principal de nuestro repositorio (Donde estan las versiones 1, 2, 3… actual).

Nombres comunes para una rama en la que arreglamos fallos: bugfixing/hotfix.

Cuando queremos fusionar los cambios de una rama con la rama master (u otra rama):

git merge [nombreDeLaRama]

Llevo un tiempo utilizando Git en distintos proyectos, pero en ningún momento me había detenido a estructurar su funcionamiento, definitivamente es impresionante!

Este flow de git me ha ayudado mucho a como moverme entre ramas. Este tema ha sido de muchas discuciones; ya que, es aquí donde puedes dañar tu codigo.
https://nvie.com/posts/a-successful-git-branching-model/

Leer también el libro que recomienda al principio me está ayudando mucho, así se puede profundizar más.

Cásate conmigo Freddy. ¡Excelente explicación!

Es excelente la forma en la que se explica este tema, en realidad en una empresa las ramas (la mayoría de las veces) se llaman así como menciona Freddy). Por acá dejó links de la documentación oficial de Git donde se hablan sobre estos temas.
¿Qué es una rama?
Procedimientos básicos para ramificar y fusionar

Commit

Un commit es un cambio rastreable (de 1 o varios archivos), es confirmar un conjunto de cambios provisionales de forma permanente y tenemos el superpoder de ponerle nombre a este cambio.

La historia de tu desarrollo se van guardando mediante commits, ya que cada cambio confirmado tiene modificaciones importantes hasta llegar al cambio actual.

Para hacer un commit, es muy sencillo, tenemos que tener agregado en el staging (git add -A) y usar el comando commit

Git commit -m 'commit'

Si trabajamos en algo experimental o que no queremos que sea parte del flujo principal, podemos hacer una nueva rama (branch), recordemos que la rama principal suela llamarse master, por lo tanto ésta branch nueva tendrá su propia historia (posterior al punto donde se creó).

Para crear una rama nueva con la información de la rama actual usamos el comando

git checkout -b nombre-del-branch

Si los cambios que realizaste en tu rama nueva son un avance en el código, puedes fusionarlo a la rama master (o a otra), para ésto tienes que cambiarte a master y hacer el comando es merge

git checkout master # nos cambiamos a la rama master
git merge rama-nueva # Fusionamos los cambios de la 'rama-nueva' en master

Muy bien explicado!

Si freddy diera todos los cursos…

unnamed.jpg

Ramas:

  • Herramienta de git para tener diferentes flujos de trabajo y luego fucionarlos.
  • Las ramas se crean copiando un commit anterior (checkout) para luego generar un nuevo flujo sobre este.
  • Fucionar dos ramas (merge) puede generar conflictos: diferencias entre ambos archivos.
  • Algunas ramas usuales son:
    hotfix: rama de solucion de errores
    development: rama de experimentos

conflicto: Cuando al hacer un merge los cambios de una rama rompan los cambios de la otra.

Screenshot_1.png

bug = bəɡ 😉

Definitivamente es muy importante practicar, practicar y practicar. Como dice Freddy, solo con ver el video no es suficiente.

Master actualmente en algunas versiones actualizadas de git se llama main.

Realice esto según lo que entendí.
Pd: Acepto correcciones.
V2 (1).png

Cada versión es memorizada por el commit, es decir que cada commit es una versión de nuestro archivo.

Puedes practicar el uso de las ramas haciendo modificaciones a los proyectos de los cursos, esto te servirá de práctica. Al final puedes tener tantas variantes como ramas en tu repositorio, tu decidirás si quieres hacerle merge a éstas o dejarlas tal cual.

hace meses estaba cursando Data Sciente pero me costaba entender, durante meses estuve plantando mis bases cursando comandos, introduccion a la informatica, etc. y ahora entiendo todo tan pero tan bien que incluso ahora todo lo hago con comandos en linux ubuntu.

Este articulo interesante muestra algunas estrategias para manejo de ramas y las compara entre ellas https://dev.to/arbitrarybytes/comparing-git-branching-strategies-dl4

Les recomiendo guardar esta clase para un futuro, aqui se habla del famoso y util GitFlow.

La convención de llamar a “Master” a la rama principal del proyecto cambió hace poco, ahora se le llama “Main”

Los hotfix o cambios en caliente te realizan una copia de la rama de producción (comúnmente la rama es master) y a partir de ahí realizar los cambios, al finalizar tus cambios, finalizas el hotfix y los cambios se mezclan en la rama de producción y en la rama de desarrollo (master, develop) de esta manera se garantiza que se corrige el problema en producción y hacia el futuro dado que en algún momento lo que este en la rama de desarrollo saldrá a producción.
Te invito a revisar que son los flujos de trabajo en git:

git flow init -f

Donde tendrás que definir cual es la rama que tienes para producción cual para desarrollo, cual para nuevas características, cual para los cambios en calientes, etc.
https://readthedocs.org/projects/git-flow/downloads/pdf/latest/
https://www.atlassian.com/es/git/tutorials/comparing-workflows/gitflow-workflow

Branch-Merge.png

Master actualmente ya no es ni debe ser Master debido a los términos raciales que se utilizaban, y desde el #BlackLivesMatter la rama Master cambió a ser la rama Main.

Cambio de Master a Main

Voy a hacer de cuenta que los branches o ramas en el sistema de control de versiones de Git, es como una línea de tiempo en dónde cada suceso va quedando “guardado” en su línea de tiempo (dicha línea de tiempo son los denominados branches).

Si ese “alguien” le da por hacer modificaciones al código, se crea un branch paralelo para que haga sus modificaciones sin afectar su línea original.

merge.jpg

Para todos los que ven este curso en 2020, GitHub y los encargados de Git, inspirado por el movimiento #blacklivesmatter cambiaran la rama master por main

¿cual es la diferencia entre checkaut y commint?

“master siempre es master”. Hasta que el 2020 atacó y pasó a ser “main”.

main

Hey muchachos recuerden que hubo un cambio del nombre por defecto de la rama principal

Paso de “master” a “main”

aca pueden ver el detalle del tema

Resumen de palabras para trabajar en equipo:

Branch Master: es la rama principal, ““la primera””.
Branch: (rama) son todasa las ramas que tienes.
Merge: (unir) es unir un commit con otro commint, pueden ser de diferentes versiones.
Cheout: (revisar) es crear una rama nueva.
Hotfix: (revisión) es revisar lo mas rapido posible porque hay que unirla a un Brach.

Espero les sea util: 😎💚💚

¿Qué es un Branch (rama) y cómo funciona un Merge en Git?
Por defecto el repositorio se encuentra en la rama Master, y cada vez que se hace un commit, se crea una nueva versión en el repositorio.

Imagina que en la version 3, decidiste realizar experimentos por tu cuenta en el código, para esto se crea una rama nueva, en este caso el llamaremos Experimentos, donde basicamente copias una version (actual o anterior) de la rama Master y la llevas a la rama Experimentos, ahi continuas trabajando y haciendo commits en esa misma rama.

Todo lo que existe en esa rama es completamente independiente y diferente de la rama Master.

Digamos que en la versión actual de Master encontraste un bug, y te obliga a modificar cosas. Para esto creas una rama nueva llamada Bugfixing, donde copias la ultima versión, en la que aprecio el bug.

Ahi realizas los cambios necesarios y llevas los cambios a la rama Master.
El llevar los cambios de una rama a otra se conoce como un Merge.

Supongamos que seguiste con la rama Experimentos y ahora estás listo para llevar esos cambios a la rama Master. Para esto se vuelve a hacer un Merge entre la rama Experimentos y Master.

No solo se pueden realizar merge entre las distintas ramas, tambien es posible traer versiones anteriores de otras ramas, realizar cambios, volver a hacer un Merge con otra rama, etc.

Normalmente en la industria, la rama Experimentos es llamada Development, y la rama Bugfixing es llamada Hotfix. Master siempre es Master.

También es posible que a la hora de hacer un Merge, haya archivos que rompan otros archivos, esto es conocido como un conflicto.

Apuntes del curso 👉🏻 acá
Apuntes de la clase 👇🏻Screen Shot 2020-11-13 at 3.07.39 AM.png

Desde octubre del 2020 ahora la rama master tiene como nuevo nombre main.

  • Lo único que cambia es el nombre y tener en cuenta el nombre en los comandos
  • Dadle ❤️ para que todos se enteren y no se vayan a perder 😃
  • Suerte 😄

Esto se podría explicar bien con la idea de los multuniversos de Marvel.

Veo el potencial de git

Genial

Clarísima la clase Freddy. Por fin entendí ramas y merge. Creo que esta clase se debería liberar. Ayudarìa a muchos!

Una consulta, cuando se trabaja en equipo ¿es malo que cada quien tenga su rama de trabajo?

Git es muy interesante para el desarrollo!!

WOW!! Git es un lio

Ramas:
master es donde se guardan las versiones con commit hasta llegar a la final.
developmen es donde se realizan versiones experimentales.
hotfix es donde se solucionan bugs

Mi resumen:
Por defecto estamos en la rama master que es donde se guardan los cambios de mis archivos y donde se crean las diferentes versiones a medida que aplicamos commit.
Rama Development: consiste en copiar la versión que deseamos (actual o anterior) de la rama master con un nombre diferente, para realizar pruebas en una rama diferente la cual a medida que le apliquemos commit generará sus propias versiones.
Si tenemos que solucionar problemas de la rama actual (master), como un bug, debemos crear una rama especial llamada hotfix y en esta rama realizamos los cambios para posteriormente probarlos con la rama actual, esa prueba o esa conexión con la rama actual es conocida como un merge.
En definitiva el merge nos permite traer los cambios realizados en otras ramas a la versión actual.
Podemos tener tantas ramas y repositorios como queramos.

Aqui todo el video resumido 😃 :
Ramas son flujos de trabajo, para hacer modificaciones aparte de la rama principal “master” para luego combinarlas de nuevo y ese proceso de unir dos ramas se conoce como Merge.

Excelente explicación, se me hizo fácil entenderlo usando como analogía la paradoja del viaje en el tiempo y realidades alternas jaja

Asombroso!

Master: Inicio del archivo, aquí están todas las versiones subidas por el commit
Experimental: o Development. Cuando realizas operaciones extrañas y esta rama poseerá cambios totalmente diferentes a la rama master
Bug fixing: o Hot Fix. Es la rama de corrección, ocurre si existe algún bug en la rama master, una vez solucionado este debe unirse una rama con la otra (llamada merge)

¿Qué es un Branch(Rama)?

Por defecto tenemos una rama que se llama Master en esta rama se guardan las versiones de los archivos que subimos al repositorio a medida que hacemos un Commit

También podemos tener ramas adicionales como una rama “Experimental” en donde podemos copiar la información de actual o de un punto anterior de la rama original Master en donde podremos hacer cambios y experimentar sin afectar directamente la rama original.

Si en algún momento se genera algún bug en la rama Master se puede crear una nueva rama que puede llamarse "“HotFix” para realizar las tareas de arreglo del bug.
¿Qué es un merge?

Imaginemos que durante la reparación del bug en la rama Hotfix encontrado en la versión actual de la rama Master se logra solucionar le problema para poder unir nuevamente los cambios que solucionan el bug actualizados en la rama HotFix a la rama Master, se realiza un merge que une ambas ramas, creando un nuevo punto en la rama Master en donde se juntan las correcciones para eliminar el bug.