Si desea asegurarse de que el parche (confirmación única) se aplicará sobre una confirmación específica, puede usar la nueva opción git 2.9 (junio de 2016) git format-patch --base
git format-patch --base=COMMIT_VALUE~ -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git format-patch --base=auto -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git config format.useAutoBase true
git format-patch -M -C COMMIT_VALUE~..COMMIT_VALUE
Ver commit bb52995 , commit 3de6651 , commit fa2ab86 , commit ded2c09 (26 de abril de 2016) por Xiaolong Ye (``) .
(Fusionada por Junio C Hamano - gitster
- en commit 72ce3ff , 23 de mayo de 2016)
format-patch
: agregar ' --base
' opción para registrar la información del árbol base
Los encargados del mantenimiento o los evaluadores externos pueden querer saber el árbol base exacto al que se aplica la serie de parches. Enseñe a git format-patch una --base
opción ' ' para registrar la información del árbol base y agregarla al final del primer mensaje (ya sea la carta de presentación o el primer parche de la serie).
La información del árbol base consiste en el "compromiso base", que es un compromiso conocido que forma parte de la parte estable del historial del proyecto en el que todos los demás trabajan, y cero o más "parches de requisitos previos", que son conocidos parches en vuelo que aún no forman parte del "compromiso base" que deben aplicarse sobre el "compromiso base" en orden topológico antes de que los parches puedan aplicarse.
El "compromiso base" se muestra como " base-commit:
" seguido del 40 hex del nombre del objeto de compromiso.
Un "parche de prerrequisito" se muestra como " prerequisite-patch-id:
" seguido por el "id de parche" de 40 hex, que se puede obtener pasando el parche a través del git patch-id --stable
comando " ".
Git 2.23 (Q3 2019) mejorará eso, porque la " --base
" opción de " format-patch
" calculó los patch-ids
parches de requisitos previos de una manera inestable, que se ha actualizado para calcular de una manera que sea compatible con " git patch-id --stable
".
Ver commit a8f6855 , commit 6f93d26 (26 abr 2019) por Stephen Boyd ( akshayka
) .
(Fusionada por Junio C Hamano - gitster
- en commit 8202d12 , 13 jun 2019)
format-patch
: hacer --base patch-id
estable la salida
No estábamos limpiando el contexto cada vez que procesábamos un fragmento en el
patch-id
código de generación diff.c
, pero lo estábamos haciendo cuando generamos ID de parche "estables" con la patch-id
herramienta ' '.
Transmitamos esa lógica similar de patch-id.c
adentro a adentro diff.c
para que podamos obtener el mismo hash cuando generamos ID de parche para ' format-patch --base=
' tipos de invocaciones de comandos.
Antes de Git 2.24 (Q4 2019), " git format-patch -o <outdir>
" hizo un equivalente de " mkdir <outdir>
" no " mkdir -p <outdir>
", que se está corrigiendo.
Ver commit edefc31 (11 oct 2019) por Bert Wesarg ( bertwesarg
) .
(Fusionada por Junio C Hamano - gitster
- en commit f1afbb0 , 18 oct 2019)
format-patch
: crea componentes principales del directorio de salida
Firmado por: Bert Wesarg
'git format-patch -o' hizo un equivalente de 'mkdir' no 'mkdir -p', que se está corrigiendo.
Evite el uso de ' adjust_shared_perm
' en los directorios principales que pueden tener implicaciones de seguridad. Logrado al desactivar temporalmente config.sharedRepository
"me gusta" git init
.
Con Git 2.25 (Q1 2020), " git rebase
" no funcionó bien cuando se format.useAutoBase
configuró la variable de configuración, que se ha corregido.
Ver commit cae0bc0 , commit 945dc55 , commit 700e006 , commit a749d01 , commit 0c47e06 (04 dic 2019) por Denton Liu ( Denton-L
) .
(Fusionada por Junio C Hamano - gitster
- en commit 71a7de7 , 16 dic 2019)
rebase
: arreglar format.useAutoBase
rotura
Reportado por: Christian Biesinger
Firmado por: Denton Liu
Con la format.useAutoBase = true
ejecución de rebase se produjo un error:
fatal: failed to get upstream, if you want to record base commit automatically,
please use git branch --set-upstream-to to track a remote branch.
Or you could specify base commit by --base=<base-commit-id> manually
error:
git encountered an error while preparing the patches to replay
these revisions:
ede2467cdedc63784887b587a61c36b7850ebfac..d8f581194799ae29bf5fa72a98cbae98a1198b12
As a result, git cannot rebase them.
Solucione esto pasando siempre --no-base
a format-patch desde rebase para que se niegue el efecto de format.useAutoBase
.
git apply --stat file.patch
# mostrar estadísticas.git apply --check file.patch
# verifique el error antes de aplicar.git am < file.patch
# aplicar el parche finalmente.