Se você quiser ter certeza de que o patch (confirmação única) será aplicado sobre uma confirmação específica, use a nova opção git 2.9 (junho 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
Consulte commit bb52995 , commit 3de6651 , commit fa2ab86 , commit ded2c09 (26 de abril de 2016) por Xiaolong Ye (``) .
(Mesclado por Junio C Hamano - gitster
- na commit 72ce3ff , 23 de maio de 2016)
format-patch
: adicionar '--base
' opção para registrar informações da árvore base
Mantenedores ou testadores de terceiros podem querer saber a árvore base exata à qual a série de patches se aplica. Ensinar git format-patch a '--base
opção ' para registrar as informações da árvore base e anexá-las no final da primeira mensagem (a carta de apresentação ou o primeiro patch da série).
As informações da árvore base consistem no "commit de base", que é um commit conhecido que faz parte da parte estável do histórico do projeto em que todos os outros trabalham, e zero ou mais "patches de pré-requisito", conhecidos correções em andamento que ainda não fazem parte do "commit básico" que precisam ser aplicadas sobre o "commit básico" em ordem topológica antes que os patches possam ser aplicados.
O "commit base" é mostrado como " base-commit:
" seguido pelo hexadecimal 40 do nome do objeto commit.
Um "patch de pré-requisito" é mostrado como " prerequisite-patch-id:
" seguido pelo "id do patch" de 40 hexadecimais, que pode ser obtido passando o patch pelo git patch-id --stable
comando " ".
O Git 2.23 (terceiro trimestre de 2019) melhorará isso, porque a --base
opção " " de " format-patch
" calculou os patch-ids
patches de pré-requisito de maneira instável, que foi atualizada para calcular de forma compatível com " git patch-id --stable
".
Veja commit a8f6855 , commit 6f93d26 (26 abr 2019) por Stephen Boyd ( akshayka
) .
(Incorporado por Junio C Hamano - gitster
- in commit 8202d12 , 13 jun 2019)
format-patch
: tornar a --base patch-id
saída estável
Não estávamos liberando o contexto toda vez que processamos um pedaço no
patch-id
código de geração diff.c
, mas estávamos fazendo isso quando geramos IDs de patch "estáveis" com a patch-id
ferramenta ' '.
Vamos portar essa lógica semelhante do patch-id.c
para, diff.c
para que possamos obter o mesmo hash quando estivermos gerando IDs de patch para format-patch --base=
tipos de chamadas de comando.
Antes do Git 2.24 (quarto trimestre de 2019), " git format-patch -o <outdir>
" fazia o equivalente a " mkdir <outdir>
" não " mkdir -p <outdir>
", que estava sendo corrigido.
Veja commit edefc31 (11 de out de 2019) de Bert Wesarg ( bertwesarg
) .
(Incorporado por Junio C Hamano - gitster
- in commit f1afbb0 , 18 out 2019)
format-patch
: criar componentes principais do diretório de saída
Assinado por: Bert Wesarg
'git format-patch -o' fez o equivalente a 'mkdir' e não 'mkdir -p', que está sendo corrigido.
Evite o uso de ' adjust_shared_perm
' nos diretórios principais, que podem ter implicações de segurança. Conseguido desativando temporariamente o ' config.sharedRepository
' like ' git init
' faz.
Com o Git 2.25 (primeiro trimestre de 2020), " git rebase
" não funcionou bem quandoformat.useAutoBase
variável de configuração foi definida, o que foi corrigido.
Consulte commit cae0bc0 , commit 945dc55 , commit 700e006 , commit a749d01 , commit 0c47e06 (04 dez 2019) por Denton Liu ( Denton-L
) .
(Incorporado por Junio C Hamano - gitster
- no commit 71a7de7 , 16 de dezembro de 2019)
rebase
: corrigir format.useAutoBase
quebra
Reportado por: Christian Biesinger
Assinado por: Denton Liu
Com format.useAutoBase = true
, executar a rebase resultou em um erro:
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.
Corrija isso sempre passando --no-base
para o patch de formato a partir da rebase, para que o efeito de format.useAutoBase
seja negado.
git apply --stat file.patch
# show stats.git apply --check file.patch
# verifique se há erros antes de aplicar.git am < file.patch
# aplique o patch finalmente.