marcelogarberoglio / PI

Para realizar consultas
5 stars 0 forks source link

Miedo a mergear branches #116

Closed mtaurian closed 1 year ago

mtaurian commented 1 year ago

Buenas noches, Creamos 2 branches, aparte del main, y estuvimos trabajando en los 3 pero en diferentes archivos. Es decir, los archivos que trabajamos en una rama no los modificabamos en otra branch. Al crear las branches, se nos hicieron copias de todos los archivos que tenemos en el repositorio. Nuestra duda es qué pasaría cuando hagamos el merge de las branches porque los archivos no trabajados en una branch están vacíos pero completos en otra.

Ejemplo: main -> trabaja con saludos.c branch 1 -> trabaja con hola.c branch 2 -> trabaja con chau.c (pero todas tienen los 3 archivos) En la branch 1 está el hola.c escrito pero el chau.c y el saludos.c están vacíos

Nos preguntabamos si nos podrían ayudar para no perder código ni el historial de commits que guarda github. Desde ya muchas gracias

fmorroni commented 1 year ago

Te doy mi input si te sirve, supongo que mañana contestará alguien de la cátedra igual.

Para empezar, si tienen la repo subida a github, en la repo local pueden romper todo lo que quieran y después solo basta con resetearla al estado que tenía en github y listo. Así que no tengan miedo en probar, es la forma más fácil de aprender. (También se puede casi siempre revertir los cambios directo desde la repo local aunque no la tengas en gh, pero tendrías que buscarte bien los comandos, principalmente git reset y git rebase).

En cuanto a tu pregunta particular, dos branches pueden trabajar en el mismo archivo, y cuando vayas a mergear hay dos posibilidades: 1) Los cambios no tienen conflicto y se mergea solo sin problema. 2) Los cambios tienen conflicto y los tenés que resolver. Resolver los conflictos puede parecer medio difícil al principio, pero es sencillo. Cuando hacés el merge git te va avisar que en cierta file hay merge conflicts, abrís esa file y en algún lado vas a encontrar algo del estilo de:

// Some code here

<<<<<<<<<< BranchA
// Changes made in BranchA
========
// Changes made in BranchB
>>>>>>>>> BranchB

// More code here

Ahí simplemente tenés que borrar lo que no te interese y listo (si ambos cambios están bien solo basta borrar los <<<<<Branch y eso)

En el caso que comentás, estando la file vacía en una branch y solo habiendo una branch distinta que la modifica, no debería haber merge conflicts.

fmeola commented 1 year ago

Hola @mtaurian. Si tenés miedo a perder información siempre podés copiar los archivos en cuestión a otro directorio local que no sea el repositorio local de git así te quedas tranquila. Lo que dice @fmorroni es correcto. Empezá a mergear de a un branch. Por ejemplo, estando en main corré el comando

git merge branch1 Esto podría darte conflictos (aunque por la situación que describís parecería que no). Luego pusheá estos cambios y revisá que esté todo OK. Por último repetí estos pasos con la branch2.

mtaurian commented 1 year ago

Muchísimas gracias a los dos! Que tengan un lindo día!! :)