Esta respuesta ha sido revisada, ya que mi comprensión, diagramas y conclusiones eran incorrectos.
git pull
provoca que la fusión se confirme porque git se está fusionando. Esto se puede cambiar configurando sus ramas para usar rebase en lugar de fusionar. El uso de rebase en lugar de fusionar en una extracción proporciona un historial más lineal al repositorio compartido. Por otro lado, las confirmaciones de fusión muestran los esfuerzos de desarrollo paralelos en la rama.
Por ejemplo, dos personas están trabajando en la misma rama. La rama comienza como:
...->C1
La primera persona termina su trabajo y empuja hacia la rama:
...->C1->C2
La segunda persona termina su trabajo y quiere presionar, pero no puede porque necesita actualizar. El repositorio local para la segunda persona se ve así:
...->C1->C3
Si la extracción está configurada para fusionarse, el repositorio de la segunda persona se verá así.
...->C1->C3->M1
\ /
->C2->
Donde M1 es un compromiso de fusión. Este nuevo historial de sucursales se enviará al repositorio. Si, en cambio, la extracción está configurada para volver a establecer la base, el repositorio local se vería así:
...->C1->C2->C3
No hay compromiso de fusión. La historia se ha hecho más lineal.
Ambas opciones reflejan la historia de la rama. git te permite elegir qué historial prefieres.
De hecho, hay lugares donde la rebase puede causar un problema con las sucursales remotas. Este no es uno de esos casos. Preferimos usar rebase, ya que simplifica un historial de rama ya complicado y muestra una versión del historial relativa al repositorio compartido.
Puede configurar branch.autosetuprebase = always para que git establezca automáticamente sus ramas remotas como rebase en lugar de master.
git config --global branch.autosetuprebase always
Esta configuración hace que git cree automáticamente una configuración para cada rama remota:
branch.<branchname>.rebase=true
Puede configurarlo usted mismo para sus sucursales remotas que ya están configuradas.
git config branch.<branchname>.rebase true
Me gustaría agradecer a @LaurensHolst por cuestionar y seguir mis declaraciones anteriores. Ciertamente he aprendido más sobre cómo funciona git con las confirmaciones de extracción y fusión.
Para obtener más información sobre las confirmaciones de fusión, puede leer Contribuir a un proyecto en ProGit-Book . La sección Private Small Team muestra las confirmaciones de fusión.
git log --no-merges