Digamos, você tem um repositório Git. Você está trabalhando no mestre ramo e você fez algumas commits (A, B e C) no mestre ramo também.
Agora, de repente você tem uma ótima ideia. Então, você cria outro ramo nova ideia. Então, você começou a fazer compromissos (E, f e g) lá.
Você também fez algumas alterações no mestre ramificar novamente e adicionar um novo compromisso H.
Agora, se sua nova ideia for um sucesso, você pode querer mesclar o nova ideia ramo para o mestre filial. Digamos que você fundiu. Isso criará um novo commit EU Como você pode ver na figura abaixo. O novo compromisso conterá tudo (todas as mudanças nas confirmações E, F, e G) do ramo nova ideia.
Agora, digamos, você não quer mesclar todos os compromissos do ramo nova ideia para o mestre filial. Você só deseja mesclar as mudanças (apenas as mudanças diff) no compromisso F para o mestre filial. É aqui que entra o Git Cherry Pick. O Git Cherry Pick permite que você faça isso. Você acabou de encontrar o hash do compromisso que deseja escolher e aplicá -lo ao ramo que deseja. Muito simples.
Neste artigo, vou mostrar como escolher o Git. Então vamos começar.
Git Cherry Pick Workflow:
Nesta seção, vou configurar um repositório Git de uma maneira que você entenderá por que o Git Cherry Pick é usado e como escolher a cereja no Git.
Primeiro, inicialize um repositório Git vazio Cherry-pick-Demo/ do seguinte modo:
$ git init cherry-pick-demo
Agora, navegue para o repositório da seguinte maneira:
$ CD Cherry-Pick-Demo/
Agora, crie um principal.c Arquivo com o seguinte conteúdo:
Agora, adicione o arquivo à área de estadiamento da seguinte forma:
$ git add .
Agora, comprometa as mudanças da seguinte maneira:
$ git commit -m 'Commits inicial'
Agora, crie um .Gitignore Arquivo com o seguinte conteúdo:
Adicione o arquivo à área de preparação.
$ git add .
Cometer as mudanças:
$ git commit -m 'adicionado .arquivo gitignore '
Como você pode ver, tenho 2 compromissos agora no meu mestre filial.
$ git log --oneeline
Agora, quero empurrar meu repositório Git local para um servidor Git remoto para que outras pessoas possam trabalhar neste repositório. Você pode usar o github aqui também. Vou usar um servidor ssh local para isso aqui.
Portanto, adicione um URL do repositório Git remoto da seguinte maneira:
$ git remoto adicionar origem [email protected]: ~/Cherry-Pick-Demo.git
Agora, empurre o mestre ramificar para o repositório Remote Git da seguinte forma:
$ Git Push Origin Master
Agora, digamos prumo quer contribuir para o projeto. Então, ele clonou o repositório Git em seu computador.
$ git clone [email protected]: ~/Cherry-Pick-Demo.Git MyProject
Agora, Bob navega para seu diretório de projeto.
$ CD MyProject/
Ele também tem os 2 começos que eu adicionei.
$ git log --oneeline
Agora, Bob cria um teste ramo para experimentar suas idéias.
checkout de $ git -b teste
Ele decide mudar o valor de retorno com uma constante Exit_success de stdlib biblioteca.
Ele adiciona as mudanças à área de estadiamento.
$ git add .
Comete as mudanças.
$ git Commit -m 'Usado exit_success em vez de 0 como o valor de retorno'
Agora, ele decide usar uma função printMessage () Para imprimir a mensagem. Então, ele escreve a função.
Ele comete as mudanças novamente.
$ git add .
$ git Commit -m 'Adicionada função printMessage ()
Então, Bob usa a função no programa.
Ele comete as mudanças novamente.
$ git add .
$ git Commit -m 'Usou PrintMessage () Função para imprimir a mensagem'
Agora, Bob tem as seguintes começos no teste filial.
Agora, Bob empurra a filial de teste para o repositório remoto Git.
Teste de origem push $ git
Agora, Bob liga para você e conta sobre as incríveis mudanças que ele fez. Então, você buscou as mudanças no repositório remoto Git para seu próprio repositório local.
$ git busca
Agora, você vê um novo ramo origem/teste.
Você também encontrou 3 novos começos que Bob fez.
$ git log -Origin/teste
Agora, você gostaria de saber quais mudanças Bob fez.
$ git log -p origem/teste
Você decide não substituir o valor de retorno por exit_success como Bob fez.
Você gosta do conceito de usar uma função para imprimir mensagens.
Você gosta disso também.
Então, você quer mesclar 2 dos 3 compromissos. Se você usou a fusão do Git para mesclar o teste de ramificação, todas as três compromissos serão aplicadas. Mas, com o recurso Git Cherry Pick, você só pode mesclar os compromissos que você gosta.
Observe que, quando você se escolhe com a escolha do Git, você sempre começa com o compromisso mais antigo e avança para o mais novo por pouco.
Antes, eu escolhi, o principal.c o arquivo parece seguinte.
Agora, vamos escolher o mais antigo dos 2 começos, 9A4E532 da seguinte forma:
$ Git Cherry-Pick 9A4E532
Um conflito de mesclagem! Isso pode acontecer.
Agora, abra o principal.c Arquive e corrija o conflito de mesclagem.
O arquivo final deve parecer o seguinte.
Agora, adicione as alterações à área de estadiamento.
$ git add.
Agora, comprometa as mudanças da seguinte maneira:
$ Git Cherry-Pick-Continue
OBSERVAÇÃO: Você também pode usar Git Commit aqui também. Você decide. eu prefiro Git Cherry -Pick -Continue Como ele usará automaticamente a mensagem de confirmação da confirmação, eu sou a colheita de cereja.
Agora, digite sua mensagem de confirmação aqui e salve o arquivo.
Um novo compromisso deve ser adicionado.
Agora, Cherry escolhe o próximo compromisso da seguinte maneira:
$ Git Cherry-Pick 08Ba5E7
Sem conflito de mesclagem. Ótimo! Uma nova confirmação deve ser adicionada automaticamente.
Como você pode ver, eu entendo exatamente o que queria. Eu só mesclei os compromissos que eu precisava.
Então, é assim que você escolhe o Git. Obrigado por ler este artigo.