¿Hay alguna manera de configurar el repositorio Git del host de manera que se git pull
realice de --rebase
forma 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 pull
la develop
bifurcación antes merge
de darle una bifurcación característica. Esto pull
casi 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.rebase
Establecer esto en
true
significa quegit pull
siempre es equivalente agit pull --rebase
(a menos quebranch.<branchname>.rebase
esté establecido explícitamente enfalse
). Esto también se puede configurar por repositorio o globalmente.2)
branch.autosetuprebase
Establecer esto en
always
significa 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
,local
oremote
se puede configurar por repositorio o globalmente. Vergit config --help
para más detalles.3)
branch.<branchname>.rebase
Establecer esto en
true
significa que esa rama en particular siempre se extraerá de su flujo ascendente a través de rebase, a menos quegit pull --no-rebase
se 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 pull
cambiar.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>.rebase
Puede configurar una sucursal local para usar siempre
--rebase
, de esta manera, reemplazando<name>
con un nombre de sucursal:Después de ejecutar esto
master
, lamaster
sección en se.git/config
veía así: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 configurarlo automáticamente para cada nueva rama:
(También se puede especificar
never
,remote
ylocal
, véaseman git-config
para más detalles.)Sin la
--global
opción, la configuración se guarda.git/config
y 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
--global
opción).Si esta opción es verdadera, la ejecución
git pull
es equivalente agit pull --rebase
, a menos quebranch.<name>.rebase
se haya establecido enfalse
.fuente
Esto hace que la
--rebase
opción sea la predeterminada cuando se emite unagit pull
rama determinada.@Flimm, necesitaba agregar
true
para que tu primera opción funcione.Entonces la sintaxis correcta es:
Para ejecutar este comando en la
develop
rama:Y ahora la
develop
sección en se.git/config
ve 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.rebase
configuració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