Considere la siguiente situación:
- Tienes un clon de un repositorio git
- Tiene algunas confirmaciones locales (confirmaciones que aún no se han enviado a ninguna parte)
- El repositorio remoto tiene nuevas confirmaciones que aún no ha reconciliado.
Entonces algo como esto:
Si ejecuta git pull
con la configuración predeterminada, obtendrá algo como esto:
Esto se debe a que git realizó una fusión.
Sin embargo, hay una alternativa. Puedes decirle a pull que haga un rebase:
git pull --rebase
y obtendrás esto:
En mi opinión, la versión rebajada tiene numerosas ventajas que se centran principalmente en mantener limpios tanto el código como el historial, por lo que me sorprende un poco el hecho de que git se fusiona de forma predeterminada. Sí, los hash de sus confirmaciones locales cambiarán, pero esto parece un pequeño precio a pagar por el historial más simple que obtiene a cambio.
Sin embargo, de ninguna manera estoy sugiriendo que esto es de alguna manera un defecto malo o incorrecto. Solo tengo problemas para pensar en las razones por las que la fusión podría ser la preferida por defecto. ¿Tenemos alguna idea de por qué fue elegido? ¿Hay beneficios que lo hacen más adecuado por defecto?
La principal motivación para esta pregunta es que mi empresa está tratando de establecer algunos estándares de línea de base (con suerte, más como pautas) sobre cómo organizamos y gestionamos nuestros repositorios para que sea más fácil para los desarrolladores acercarse a un repositorio con el que no han trabajado antes. Estoy interesado en argumentar que, por lo general, deberíamos cambiar la base en este tipo de situación (y probablemente recomendar a los desarrolladores que configuren su configuración global para rebase de forma predeterminada), pero si me opusiera a eso, sin duda estaría preguntando por qué rebase no t por defecto si es tan genial. Así que me pregunto si hay algo que me falta.
Se ha sugerido que esta pregunta es un duplicado de ¿Por qué tantos sitios web prefieren "git rebase" sobre "git merge"? ; sin embargo, esa pregunta es algo inversa a esta. Discute los méritos de rebase sobre fusionar, mientras que esta pregunta pregunta sobre los beneficios de fusionar sobre rebase. Las respuestas allí reflejan esto, enfocándose en los problemas de fusión y los beneficios de rebase.