Como escolher o Git

Como escolher o Git
Git Cherry Pick é um recurso de mesclagem do git. Mas há uma pequena diferença na picareta de cereja Git e na fusão do git. Além disso, o caso de uso é diferente. Vamos ver como a mesclagem do git funciona primeiro e depois compará -la para fazer a colheita de cereja. Dessa forma, você entenderá quando usar a fusão do Git e quando usar o Git Cherry Pick.

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.