¿Qué sucede cuando Dan cambia el text a 'aB' y John a 'abc'?

Imagina un documento de text muy simple (text.txt) con contenido como las letras 'ab'. Este file ha sido check-in en un repository canónico (remoto). Dos personas tienen un cierre local de este repository y, por lo tanto, este file y comienzan a editarlo. Dan cambia el contenido a 'aB' (observe la letra B mayúscula) y John edita su versión a 'abc'. Dan hace un commit y lo empuja al repository canónico. John un poco más tarde hace una confirmación local y empuja los cambios a control remoto. ¿Qué sucede (post) cuando John empuja su repository?

Depende de qué banderas use John cuando empuje.

De forma pnetworkingeterminada, no se podrá pulsar, porque el encabezado de la ramificación remota (compromiso de Dan) no es un antepasado de la revisión de Juan.

Con -f o --force , simplemente sobrescribirá el cambio de Dan con el de John, deshaciendo efectivamente el push de Dan – si el server está configurado para permitir empujes forzados al less. Muchos serveres de git simplemente se negarán a hacer esto.

Generalmente, la forma "correcta" de hacerlo es que John intente empujar normalmente. Él verá el error que mencioné, y sabrá que alguien más ha hecho cambios. Luego hará un git pull para recuperar los cambios de Dan y fusionarlos con los suyos. La extracción intentará fusionarse, provocará un conflicto en su file de text y dejará que John lo arregle. Después de que John resuelva el conflicto (tal vez haciendo que el file contenga 'aBc' y luego usando git add text.txt; git commit para que git lo sepa), su repository local includeá una 'fusión' que está marcada como que incluye ambos cambios. Luego puede enviar eso al server sin más problemas.

No hay conflicto El rechazo de Juan simplemente será rechazado porque el compromiso que está tratando de impulsar no es un descendiente directo de la twig remota.

Si John quiere que su compromiso sea empujado, primero debe fusionarlo con el compromiso que es el jefe de la sucursal remota o reembolsar su compromiso además de ese compromiso. En este punto, tendrá que elegir cómo resolver el conflicto resultante en el file de text.

Habrá un conflicto de fusión