Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.50.1 → 2.51.2 no changes
-
2.50.0
2025-06-16
- 2.45.1 → 2.49.1 no changes
-
2.45.0
2024-04-29
- 2.39.4 → 2.44.4 no changes
-
2.39.3
2023-04-17
- 2.38.1 → 2.39.2 no changes
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 no changes
-
2.35.0
2022-01-24
- 2.30.1 → 2.34.8 no changes
-
2.30.0
2020-12-27
- 2.27.1 → 2.29.3 no changes
-
2.27.0
2020-06-01
- 2.23.1 → 2.26.3 no changes
-
2.23.0
2019-08-16
- 2.22.1 → 2.22.5 no changes
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.10.5 → 2.20.5 no changes
-
2.9.5
2017-07-30
- 2.8.6 no changes
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
- 2.4.12 → 2.5.6 no changes
-
2.3.10
2015-09-28
- 2.1.4 → 2.2.3 no changes
-
2.0.5
2014-12-17
RESUMO
git cherry-pick [--edit] [-n] [-m <parent-number>] [-s] [-x] [--ff]
[-S[<keyid>]] <commit>…
git cherry-pick (--continue | --skip | --abort | --quit)
DESCRIÇÃO
Com um ou mais commits existentes, aplique a alteração introduzida por cada um deles, registrando um novo commit individualmente. Isso exige que a sua árvore de trabalho esteja limpa (sem alterações do commit HEAD).
Quando não é óbvio como aplicar uma alteração, acontece o seguinte:
-
O ramo atual e o ponteiro
HEADpermanecem no último commit realizado com sucesso. -
A referência
CHERRY_PICK_HEADé configurada para apontar para o commit que introduziu a mudança que é difícil de aplicar. -
Caminhos nos quais a mudança aplicada corretamente são atualizados no arquivo de índice e na sua árvore de trabalho.
-
Para caminhos conflitantes, o arquivo do índice registra até três versões, conforme descrito na seção "TRUE MERGE" do git-merge[1]. Os arquivos da árvore de trabalho incluirão uma descrição do conflito entre os rotuladores de conflito usuais <<<<<<< e >>>>>>>.
-
Nenhuma outra modificação é feita.
Veja git-merge[1] para algumas dicas sobre como resolver tais conflitos.
OPÇÕES
- <commit>…
-
Faz os commits para "cherry-pick". Para obter uma lista mais completa de formas de escrever os commits, consulte gitrevisions[7]. Conjuntos dos commits que podem ser passadas, mas por predefinição, nenhuma travessia é feita, como se a opção
--no-walkfosse especificada, consulte git-rev-list[1]. Observe que a especificação de um intervalo alimentará todos os argumentos <commit>… para uma única etapa da revisão (veja um exemplo posterior que usa maint master…next). - -e
- --edit
-
Com esta opção, o git cherry-pick permitirá que você edite a mensagem de commit antes de confirmar.
- --cleanup=<modo>
-
Essa opção define como a mensagem de commit sera limpa antes de ser encaminhada para o maquinário de commit. Para mais detalhes consulte git-commit[1]. Em particular, caso o valor <mode> tenha um valor de tesoura
scissors, a tesoura será anexada aMERGE_MSGantes de ser repassada no caso de um conflito. - -x
-
Ao registrar o commit, acrescente uma linha que diga "(cherry picked from commit …)" à mensagem original do commit para indicar de qual commit essa alteração foi retirada. Isso é feito apenas para escolhas seletivas (cherry picks) sem conflitos. Não use essa opção se estiver fazendo uma seleção seletiva da sua ramificação privada, pois as informações são inúteis para o destinatário. Se, por outro lado, você estiver escolhendo entre duas ramificações visíveis publicamente (por exemplo, fazer o "backport" de uma correção para uma ramificação de manutenção para uma versão mais antiga de uma ramificação de desenvolvimento), adicionar estas informações pode ser útil.
- -r
-
Antigamente, o comando tinha como padrão fazer o
-xdescrito acima e o-rera para desativá-lo. Agora, a predefinição é não fazer-x, portanto, essa opção não funciona. - -m <parent-number>
- --mainline <número-relacionado>
-
Normalmente, não é possível selecionar uma mesclagem porque você não sabe qual lado da mesclagem deve ser considerado como principal. Esta opção especifica o "parent number" ou número principal (a partir de 1) da linha principal e permite que o cherry-pick reproduza a alteração em relação ao principal definido.
- -n
- --no-commit
-
Normalmente, o comando cria automaticamente uma sequência de commits. Esta opção aplica as alterações necessárias para selecionar cada commit nomeado em sua árvore de trabalho e no índice, sem fazer qualquer commit. Além disso, quando esta opção é usada, seu índice não precisa corresponder ao commit do
HEAD. A seleção seletiva (cherry-pick) é feita em relação ao estado inicial do seu índice.Isso é útil quando você seleciona mais de um efeito de commit para seu índice numa linha.
- -s
- --signoff
-
Adicione uma linha
Signed-off-byno final da mensagem de confirmação. Consulte a opção signoff do comando git-commit[1] para obter mais informações. - -S[<keyid>]
- --gpg-sign[=<keyid>]
- --no-gpg-sign
-
Commits assinados com o GPG O argumento
keyidé opcional e a predefinição retorna para a identidade de quem fez o commit; caso seja utilizado, deve estar anexado a opção e sem espaço. A opção--no-gpg-signé útil para revogar a variável de configuraçãocommit.gpgSigne a anterior--gpg-sign. - --ff
-
Se o atual HEAD é o mesmo que o pai do commit cherry-pick’ed, então um avanço rápido para este commit será executado.
- --allow-empty
-
By default, cherry-picking an empty commit will fail, indicating that an explicit invocation of
gitcommit--allow-emptyis required. This option overrides that behavior, allowing empty commits to be preserved automatically in a cherry-pick. Note that when "--ff" is in effect, empty commits that meet the "fast-forward" requirement will be kept even without this option. Note also, that use of this option only keeps commits that were initially empty (i.e. the commit recorded the same tree as its parent). Commits which are made empty due to a previous commit will cause the cherry-pick to fail. To force the inclusion of those commits, use--empty=keep. - --allow-empty-message
-
É predefinido que um commit com uma mensagem vazia falhe durante uma seleção seletiva (cherry-pick). Essa opção substitui este comportamento permitindo que os commits com mensagens vazias sejam escolhidas a dedo.
- --empty=(drop|keep|stop)
-
How to handle commits being cherry-picked that are redundant with changes already in the current history.
Note that
--empty=dropand--empty=stoponly specify how to handle a commit that was not initially empty, but rather became empty due to a previous commit. Commits that were initially empty will still cause the cherry-pick to fail unless one of--empty=keepor--allow-emptyare specified. - --keep-redundant-commits
-
Deprecated synonym for
--empty=keep. - --strategy=<estratégia>
-
Use a estratégia de mesclagem fornecida. Deve ser utilizada apenas uma vez. Consulte a seção ESTRATÉGIAS DE MESCLAGEM do comando git-merge[1] for details.
- -X<opção>
- --strategy-option=<opção>
-
Encaminhe a opção específica da estratégia de mesclagem para a estratégia de mesclagem. Para mais detalhes consulte git-merge[1].
-
--rerere-autoupdate -
--no-rerere-autoupdate -
Depois que o mecanismo rerere reutilizar uma resolução registrada no conflito atual para atualizar os arquivos na árvore de trabalho, permita que ele também atualize o índice com o resultado da resolução. A opção
--no-rerere-autoupdateé uma boa maneira de verificar novamente o que orererefez e detectar possíveis erros de mesclagem, antes de fazer o commit resultante no índice com um comandogitaddseparado.
SEQUENCER SUBCOMANDOS
- --continue
-
Continue a operação em andamento usando as informações em
.git/sequencer. Pode ser usado para continuar após uma falha da resolução de conflitos num "cherry-pick" ou numa reversão. - --skip
-
Ignore o commit atual e continue com o restante da sequência.
- --quit
-
Esqueça a operação atual em andamento. Pode ser usado para limpar a condição de falha do sequenciador após um "cherry-pick" ou uma reversão.
- --abort
-
Cancele a operação e retorne a condição pré-sequência.
EXEMPLOS
-
gitcherry-pickmaster -
Aplique a mudança introduzida pelo commit na ponta do branch master e crie um novo commit com esta mudança.
-
gitcherry-pick..master -
gitcherry-pick^HEADmaster -
Aplique as alterações introduzidas por todos os commits que são ancestrais do master, mas não do HEAD para produzir novos commits.
- git cherry-pick maint próximo ^master
- git cherry-pick maint master..próximo
-
Aplique as alterações introduzidas por todos os commits que sejam ancestrais
maintou do próximo, nem domasterou de qualquer um de seus ancestrais. Observe que o último não significamainte tudo entremasterenext; especificamente,maintnão será usado se estiver incluído emmaster. -
gitcherry-pickmaster~4master~2 -
Aplique as alterações introduzidas pelo quinto e terceiro últimos commits apontados pelo master e crie 2 novos commits com essas mudanças.
-
gitcherry-pick-nmaster~1next -
Aplique as alterações na árvore de trabalho e no índice que foram introduzidos pelo segundo último commit apontada pelo "master" e pelo último commit apontada pelo próximo, porém não crie nenhum commit com estas alterações.
-
gitcherry-pick--ff..next -
Se o histórico for linear e
HEADfor um ancestral do próximo, atualize a árvore de trabalho e avance o ponteiroHEADpara a próxima correspondência. Caso contrário, aplique as alterações introduzidas por estes commits que estão próximos, mas não são oHEADdo ramo atual, criando um novo commit para cada nova alteração. -
gitrev-list--reversemaster--README|gitcherry-pick-n--stdin -
Aplique as alterações introduzidas por todas as confirmações no ramo principal que tocaram no README para a árvore de trabalho e o índice, para que o resultado possa ser inspecionado e transformado numa única nova confirmação, se adequado.
A seqüência a seguir tenta retroceder um patch, suspender porque o código ao qual o patch se aplica mudou muito e, em seguida, tenta novamente, desta vez exercendo mais cuidado com as linhas de contexto correspondentes.
$ git cherry-pick topic^ (1) $ git diff (2) $ git cherry-pick --abort (3) $ git cherry-pick -Xpatience topic^ (4)
-
Aplica a alteração que seriam mostradas pelo
gitshowtopic^. Neste exemplo, a correção não se aplica de forma limpa, portanto, as informações sobre o conflito são gravadas no índice e na árvore de trabalho sem resultados de novos commits. -
resumir as alterações a serem reconciliadas
-
Cancela a escolha seletiva. Em outras palavras, retorne ao estado anterior à escolha seletiva, preservando todas as alterações locais que você tinha na árvore de trabalho.
-
tente aplicar a mudança introduzida por
topic^novamente, gastando tempo extra para evitar erros baseados em linhas de contexto correspondentes incorretas.
GIT
Parte do conjunto git[1]