Git

Como escolher a cereja no Git

Como escolher a cereja no Git
O git cherry pick é um recurso de mesclagem do Git. Mas há uma pequena diferença no git cherry pick e no git merge. Além disso, o caso de uso é diferente. Vamos ver como o git merge funciona primeiro e depois compará-lo com o git cherry pick. Dessa forma, você entenderá quando usar o git merge e quando usar o git cherry pick.

Digamos que você tenha um repositório Git. Você está trabalhando no mestre branch e você fez alguns commits (A, B e C) no mestre ramo também.

Agora, de repente, você tem uma ótima ideia. Então, você cria outro branch nova ideia. Então, você começou a fazer commits (E, F e G) lá.

Você também fez algumas alterações no mestre branch novamente e adicionou um novo commit H.

Agora, se sua nova ideia for um sucesso, você pode querer mesclar o nova ideia ramo para o mestre galho. Digamos que você o fundiu. Irá criar um novo commit eu como você pode ver na figura abaixo. O novo commit conterá tudo (todas as mudanças nos commits E, F, e G) da filial nova ideia.

Agora, digamos, você não quer mesclar todos os commits do branch nova ideia para o mestre galho. Você só deseja mesclar as mudanças (apenas as mudanças diff) no commit F para o mestre galho. É aqui que entra o git cherry pick. O Git Cherry Pick permite que você faça isso. Você acabou de encontrar o hash do commit que deseja escolher e aplicá-lo ao branch que deseja. Muito simples.

Neste artigo, vou mostrar a você como escolher no Git. Então vamos começar.

Fluxo de trabalho do Git Cherry Pick:

Nesta seção, irei configurar um repositório Git de uma forma que você entenderá por que o git cherry pick é usado e como escolher o cherry pick no Git.

Primeiro, inicialize um repositório Git vazio cherry-pick-demo / do seguinte modo:

$ git init cherry-pick-demo

Agora, navegue até o repositório da seguinte maneira:

$ cd cherry-pick-demo /

Agora, crie um a Principal.c arquivo com o seguinte conteúdo:

Agora, adicione o arquivo à área de teste da seguinte maneira:

$ git add .

Agora, comprometa as alterações da seguinte maneira:

$ git commit -m 'commit inicial'

Agora, crie um .gitignore arquivo com o seguinte conteúdo:

Adicione o arquivo à área de teste.

$ git add .

Comprometa as mudanças:

$ git commit -m 'adicionado .arquivo gitignore '

Como você pode ver, tenho 2 commits agora no meu mestre galho.

$ git log --oneline

Agora, quero enviar meu repositório Git local para um servidor Git remoto para que outras pessoas possam trabalhar neste repositório. Você também pode usar o GitHub aqui. Vou usar um servidor SSH local para isso aqui.

Portanto, adicione um URL de repositório Git remoto da seguinte maneira:

$ git remote add origin git @ git.linuxhint.com: ~ / cherry-pick-demo.idiota

Agora, empurre o mestre ramifique para o repositório Git remoto da seguinte maneira:

$ 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 git @ git.linuxhint.com: ~ / cherry-pick-demo.git myproject

Agora, bob navega para o diretório de seu projeto.

$ cd myproject /

Ele também tem os 2 commits que adicionei.

$ git log --oneline

Agora, Bob cria um teste ramo para experimentar as ideias dele.

$ git checkout -b test

Ele decide alterar o valor de retorno com uma constante EXIT_SUCCESS de stdlib biblioteca.

Ele adiciona as mudanças à área de teste.

$ git add .

Compromete as mudanças.

$ git commit -m 'usou EXIT_SUCCESS em vez de 0 como valor de retorno'

Agora, ele decide usar uma função printMessage () imprimir a mensagem. Então, ele escreve a função.

Ele confirma as mudanças novamente.

$ git add .
$ git commit -m 'função printMessage () adicionada'

Então, bob usa a função no programa.

Ele confirma as mudanças novamente.

$ git add .
$ git commit -m 'usou a função printMessage () para imprimir a mensagem'

Agora, bob tem os seguintes commits no teste galho.

Agora, bob envia o branch de teste para o repositório remoto Git.

$ git push origin test

Agora, Bob liga para você e fala sobre as mudanças incríveis que ele fez. Então, você buscou as alterações do repositório remoto Git para seu próprio repositório local.

$ git fetch

Agora, você vê um novo ramo origem / teste.

Você também encontrou 3 novos commits que Bob fez.

$ git log - origem / teste on-line

Agora, você gostaria de saber quais mudanças bob fez.

$ git log -p origin / test

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ê também gosta deste commit.

Então, você deseja mesclar 2 dos 3 commits que bob fez. Se você usou git merge para mesclar o teste de branch, então todos os 3 commits seriam aplicados. Mas, com o recurso git cherry pick, você só pode mesclar os commits que desejar.

Observe que quando você escolhe os commits no Git, você sempre começa com o commit mais antigo e avança para o mais novo pouco a pouco.

Antes, eu escolhi cereja, o a Principal.c arquivo tem a seguinte aparência.

Agora, vamos escolher o mais antigo dos 2 commits, 9a4e532, da seguinte maneira:

$ git cherry-pick 9a4e532

Um conflito de fusão! Isso pode acontecer.

Agora, abra o a Principal.c arquivo e consertar o conflito de mesclagem.

O arquivo final deve ser o seguinte.

Agora, adicione as alterações à área de teste.

$ git add.

Agora, comprometa as alterações da seguinte maneira:

$ git cherry-pick --continue

NOTA: Você também pode usar git commit aqui também. Você decide. eu prefiro git cherry-pick -continue pois irá usar automaticamente a mensagem de commit do commit que estou escolhendo.

Agora, digite sua mensagem de confirmação aqui e salve o arquivo.

Um novo commit deve ser adicionado.

Agora, escolha o próximo commit da seguinte maneira:

$ git cherry-pick 08ba5e7

Sem conflito de mesclagem. Excelente! Um novo commit deve ser adicionado automaticamente.

Como você pode ver, eu consigo exatamente o que queria. Eu apenas mesclei os commits de que precisava.

Então, é assim que você escolhe no Git. Obrigado por ler este artigo.

Portas de código aberto para motores de jogos comerciais
Recriações gratuitas, de código aberto e de mecanismo de jogo de plataforma cruzada podem ser usadas para jogar jogos antigos, bem como alguns dos tít...
Melhores jogos de linha de comando para Linux
A linha de comando não é apenas sua maior aliada ao usar o Linux - ela também pode ser uma fonte de entretenimento porque você pode usá-la para jogar ...
Melhores aplicativos de mapeamento de gamepad para Linux
Se você gosta de jogar no Linux com um gamepad em vez de um teclado típico e sistema de entrada de mouse, existem alguns aplicativos úteis para você. ...