Entendidos en Github tengo unas dudas

RecklessN1

Hola gente de mv , estoy comenzando a usar git.

Me he creado un repositorio y he añadido como colaborador a un amigo. Y mi duda es la siguiente, a ver si no me lio mucho explicando.

Imaginaros que tenemos solo el README en el repo y solamente la rama master. El contenido del README es el siguiente.

Los dos clonamos ese repositorio a local para poder trabajar en el. Y por ejemplo modifico el README y lo dejo tal que así :

y hago el git push origin master

Y el a la misma vez que yo modifico README lo modifica el y lo deja tal que así :

y hace el push después de mi.

Habría alguna forma de que el resultado al hacer mi amigo el push fuera?:

Con una rama para cada colaborados a lo mejor o es imposible hacer esto?

Un saludo.

B

En el caso de que modificaran la misma línea al último le saldrá conflicto y tendrá que resolverlo, recuerda siempre hacer pull antes del push para evitar conflictos. De todas formas lo mejor es una rama cada uno y luego merge.

1 respuesta
RecklessN1

#2 Si modificaramos lineas distintas no habria problema?
Alguna tutorial así rápido de leer que conozcas que traten sobre el tema? Yo los que he visto no tocaban el tema de trabajo en grupo.

Gracias!!

2 respuestas
TeNSHi

#3 Yo hace tiempo me ví los vídeo tutoriales de este tipo de Git y GitHub (son 4) el cuarto creo que es lo que buscas, aunque el vídeo no es corto pero bueno yo creo que mas o menos esta bien explicado:

CodingCloud

#3 El problema no son las lineas que se tocan, si no los commits que existan en una rama.

Para hacer lo que tu quieres, una vez que tu amigo haya commiteado su cambio, deberá hacer un git pull, puesto que no puede pushear a origin nada al tener una rama con diferentes commits en el repo. Al hacer el pull entra en conflicto y puedes hacer un rewind de ese commit al final de la rama, si no de la misma forma tampoco te dejara pushear al joder el historico que esta en el servidor.

Realmente esto no deberia de hacerse en master, pero bueno poco a poco.
Echale un vistazo a esto: https://es.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

Si estais usando un programita con interfaz grafica para git, no os puedo echar una mano jamas lo he usado. Ahora, comandos en terminal todos los que querais.

1 respuesta
telecosboy

Lo recomendable es no trabajar directamente con la rama master de github, sino que ir trabajando en dev, hasta tener una versión estable y que funcione y luego ponerla en github

RecklessN1

La cosa es que estamos haciendo una web y yo hago html css y el php entonces nos gustaría poder tocar el mismo archivo a la vez, por ejemplo el metiendo el php y yo metiendo ids y cosas así para luego usar el css...es que sino es un coñazo no poder tocar en un fichero hasta que el otro acabe y lo suba a algún sitio...

#5 No, somos más de comandos, de hecho al principio estaba mirando la interfaz gráfica que te instala git y no me gustó nada.

2 respuestas
Amazon

#7 haz una rama DISEÑO y otra rama PROGRAMACION y cada vez que el otro haga un push, te haces un pull desde su rama a la tuya (y viceversa)

Te pongo un esquema explicativo:

4 1 respuesta
RecklessN1

#8 Pero si hago un pull cuando el hace un push y yo llevaba un rato currando, no se supone que todo lo que yo tenía hecho en un archivo que el tocara desaparece?

1 respuesta
Amazon

#9 no porque estáis tocando "lineas diferentes".

El git detectará que él añadió texto y que tú añadiste texto, y pondrá los 2 en el archivo final.

En caso de que tú hayas borrado una línea que él no o algo así, saltará un conflicto al intentar hacer el push y tendrás que resolverlo mirando el fichero y decidiendo qué dejar y qué no.

Long story short: no puedes hacer un push si no has hecho pull antes.

1 respuesta
RecklessN1

#10 Y por ejemplo cuando tengamos una versión con cambios significados a lo anterior del master hacer un push al master no?

1 respuesta
Amazon

#11 si es significativos, sí.

Aunque por lo general yo subo al master cuando está estable y finalizado el cambio actual de la rama

1 respuesta
RecklessN1

#12 Mi problema es que nunca lo he necesitado y creo que quiero aprenderlo todo demasiado rápido porque me hace falta para ya, pero tengo que tomármelo con calma.

Gracias por las explicaciones.

DarkSoldier

#7 es curioso pero has llegado a una conclusión sin darte cuenta, el front debe estar separado del back

spoiler
1 respuesta
DaRk-eXe

todo esta theorycraft que tiene montao #1 se resolvería más facil si simplemente haceis la prueba.

1
E

#14 es lo que tiene, que la interfaz debe estar separado de la clase datos. Pero luego siempre se mete alguna referencia de la clase datos a la interfaz, todo por ahorrar tiempo y esfuerzo xD

Saphyel

Por aqui veo muchos conceptos equivocados... github solo es un repositorio externo, las dudas que teneis son unicamente de git.

commits, puedes hacer tantos como quieras, el conflicto siempre es al hacer push/merge/pull/rebase.
Para los cambios que dices, siempre que trabajes en la ultima version de tu amigo no deberia haber ningun conflicto (para ninguno de los 2).

Y como recomendacion personal: yo evitaria el uso de HTML en un fichero PHP.

PS: Los conflictos tampoco son el fin del mundo... Pero si hay buena comunicacion en el equipo son faciles de evitar.

Usuarios habituales