Solución:
Ahora hay 3 niveles diferentes de configuración para el comportamiento de extracción predeterminado. Desde los más generales hasta los más finos, son:
1. pull.rebase
Estableciendo esto en true
significa que git pull
es siempre equivalente a git pull --rebase
(a no ser que branch.<branchname>.rebase
se establece explícitamente en false
). Esto también se puede configurar por repositorio o globalmente.
2. branch.autosetuprebase
Estableciendo esto en always
significa que cada vez que se crea una rama de seguimiento, se creará una entrada de configuración como la que se muestra a continuación. Para un control más fino, esto también se puede configurar en never
, local
o remote
y se puede configurar por repositorio o globalmente. Ver git config --help
para mas detalles.
3. branch.<branchname>.rebase
Estableciendo esto en true
significa que esa rama en particular siempre se extraerá de su flujo ascendente a través del rebase, a menos que git pull --no-rebase
se utiliza explícitamente.
Conclusión
Entonces, si bien no puede cambiar el comportamiento predeterminado para todos los clones futuros de un repositorio, puede cambiar el predeterminado para todos los repositorios del usuario actual (existente y futuro) a través de git config --global pull.rebase true
.
Qué tal si
git config --global pull.rebase true
Esto le dirá a git que siempre tire con rebase.
La respuesta es no.
No hay forma de configurar un repositorio remoto para que todos los que lo clonen tengan el comportamiento predeterminado de git pull
cambió.
Sin embargo, puede configurar un enlace del lado del servidor que compruebe que nadie empuja las confirmaciones de fusión (algo como esto, quizás).
También hay algunas opciones de configuración que pueden interesarle. Todos los desarrolladores que clonen desde el repositorio remoto tendrán que configurarlo ellos mismos manualmente.
1. Opción branch.<name>.rebase
Puede configurar una sucursal local para usar siempre --rebase
, así, reemplazando <name>
con un nombre de sucursal:
git config branch.<name>.rebase true
Después de ejecutar esto en master
, los master
sección en .git/config
se veía así:
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
2. Opción branch.autosetuprebase
Ejecutar ese comando de configuración anterior para cada rama de Git puede ser una molestia, por lo que puede configurar Git para que lo configure automáticamente para cada nueva rama:
git config branch.autosetuprebase always
(También puede especificar never
, remote
, y local
, ver man git-config
para detalles.)
Sin el --global
opción, la configuración se guarda en .git/config
, y solo se ve afectado el repositorio actual. Con --global
, la configuración se guarda en ~/.gitconfig
y todos los repositorios no configurados se ven afectados.
Esta opción no afecta a las sucursales ya existentes.
3. Opción pull.rebase
git config pull.rebase true
(También puedes darle el --global
opción.)
Si esta opción es verdadera, ejecutando git pull
es equivalente a git pull --rebase
, a no ser que branch.<name>.rebase
se ha establecido en false
.