¿Hay alguna manera de configurar el repositorio Git del host de manera que se git pullrealice de --rebaseforma predeterminada desde sus clones (locales) ? Al buscar en Stack Overflow, me enteré branch.autosetuprebase, pero necesita ser configurado por clon individualmente.
El flujo de mi proyecto está configurado de manera tal que hacemos pullla developbifurcación antes mergede darle una bifurcación característica. Esto pullcasi siempre se usa --rebase, así que estoy tratando de averiguar si esto puede ser el predeterminado.

Respuestas:
Ahora hay 3 niveles diferentes de configuración para el comportamiento de extracción predeterminado. De lo más general a lo más fino son:
1)
pull.rebaseEstablecer esto en
truesignifica quegit pullsiempre es equivalente agit pull --rebase(a menos quebranch.<branchname>.rebaseesté establecido explícitamente enfalse). Esto también se puede configurar por repositorio o globalmente.2)
branch.autosetuprebaseEstablecer esto en
alwayssignifica que cada vez que se crea una rama de seguimiento, se creará una entrada de configuración como la siguiente. Para un control más detallado, esto también se puede establecer ennever,localoremotese puede configurar por repositorio o globalmente. Vergit config --helppara más detalles.3)
branch.<branchname>.rebaseEstablecer esto en
truesignifica que esa rama en particular siempre se extraerá de su flujo ascendente a través de rebase, a menos quegit pull --no-rebasese use explícitamente.Conclusión
Entonces, aunque no puede cambiar el comportamiento predeterminado para todos los clones futuros de un repositorio, puede cambiar el valor predeterminado para todos los repositorios del usuario actual (existentes y futuros) a través de
git config --global pull.rebase true.fuente
~/.gitconfig, lo que significa que cada desarrollador que clone el repositorio de host necesitaría ejecutar el comando. No me quejo de su solución. Es bueno, solo quiero confirmar que entendí tu punto correctamente.Qué tal si
Esto le dirá a git que siempre tire con rebase.
fuente
--bool, no es necesarioLa respuesta es no.
No hay una manera de configurar un repositorio remoto para que todos los que lo clonen tengan el comportamiento predeterminado de
git pullcambiar.Sin embargo, puede configurar un enlace del lado del servidor que verifique que nadie empuje las confirmaciones de fusión ( algo como esto , tal vez).
También hay algunas opciones de configuración que pueden interesarle. Todos los desarrolladores que clonen desde el repositorio remoto deberán configurarlo ellos mismos manualmente.
1. Opción
branch.<name>.rebasePuede configurar una sucursal local para usar siempre
--rebase, de esta manera, reemplazando<name>con un nombre de sucursal:Después de ejecutar esto
master, lamastersección en se.git/configveía así:2. Opción
branch.autosetuprebaseEjecutar ese comando de configuración anterior para cada rama de Git puede ser una molestia, por lo que puede configurar Git para configurarlo automáticamente para cada nueva rama:
(También se puede especificar
never,remoteylocal, véaseman git-configpara más detalles.)Sin la
--globalopción, la configuración se guarda.git/configy solo el repositorio actual se ve afectado. Con--global, la configuración se guarda en~/.gitconfig, y cada repositorio no configurado se ve afectado.Esta opción no afecta a las sucursales ya existentes.
3. Opción
pull.rebase(También puedes darle la
--globalopción).Si esta opción es verdadera, la ejecución
git pulles equivalente agit pull --rebase, a menos quebranch.<name>.rebasese haya establecido enfalse.fuente
Esto hace que la
--rebaseopción sea la predeterminada cuando se emite unagit pullrama determinada.@Flimm, necesitaba agregar
truepara que tu primera opción funcione.Entonces la sintaxis correcta es:
Para ejecutar este comando en la
developrama:Y ahora la
developsección en se.git/configve así:fuente
Actualmente no hay forma de establecer la política predeterminada para un repositorio.
Si lo desea para usted y usa al menos git 1.7.9, puede establecer globalmente la
pull.rebaseconfiguración de la siguiente manera:Pero tendrás que hacer en cada máquina. Una opción podría ser configurar la plantilla / esqueleto de inicio del usuario predeterminado con esa opción. Sin embargo, los usuarios pueden cambiar esa opción.
Si no desea fusiones, puede definir un enlace del lado del servidor para rechazar los empujes con fusiones.
Para su referencia, esta es la documentación fuente de pull.rebase:
fuente