Cherry pick — Git e Github

As vezes precisamos pegar um commit individual que se encontra em uma outra branch, com alguma feature ou correção que aconteceu em paralelo, o Cherry pick faz exatamente isso, ele junta dois commits em uma linha do tempo, evitando de repente de realiz…


This content originally appeared on DEV Community and was authored by DEV Community

As vezes precisamos pegar um commit individual que se encontra em uma outra branch, com alguma feature ou correção que aconteceu em paralelo, o Cherry pick faz exatamente isso, ele junta dois commits em uma linha do tempo, evitando de repente de realizar um Merge.

Cherry pick

Em alguns momentos nos vemos em uma situação onde estamos desenvolvendo em uma branch(chamaremos de Branch X), porém existe outro integrante do time que está trabalhando em uma task em outra branch (chamaremos de Branch Y), as duas estão sendo desenvolvidas juntas. O dev da branch Y encontrou e corrigiu um bug que impacta diretamente na task da branch X.

Cherry pick

Ao invés de ter que realizar um commit e fazer um merge ou qualquer outra gambiarra (Não precisa mandar o código pelo privado) pode ser feito um commit da correção e o dev da branch X usa o Cherry pick para pegar apenas a correção e trazer para a sua linha do tempo.

Lembrando que o cherry pick não é bala de prata, as vezes realmente é melhor fazer um merge.

Cherry pick na prática

Antes de irmos para o Bash, é interessante esclarecer que é necessário ter duas branchs e pelo menos um commit na branch que você vai pegar o commit.

Vamos começar bem do início, precisamos criar uma branch:
git checkout -b feat/header

Realizar um commit:
git commit -am "Feat: create header"

Criar uma nova branch (a que vai receber o commit, no caso da branch feat/header).
git checkout -b feat/menu-hamburger

Output

Imagine agora que o dev que está desenvolvendo na branch feat/header encontrou um problema e já corrigiu, e a pessoa que está na feat/menu-hamburger precisava ter acesso a essa correção.

Agora precisamos pegar o HASH (Identificador) do commit que queremos, para isso vamos na branch que está o commit:
git checkout feat/header

Rodamos um git log para mostrar os commit e seu respectivo HASH:
git log --oneline

Voltamos para a branch que ira receber o commit:
git checkout feat/menu-hamburger

E rodamos o tão famoso Cherry-pick, lembrando de passar o HASH:
git cherry-pick 68bbe92

Output
Resolva os conflitos, se existirem

Pegar um conjunto de commit

Mas e se eu quiser pegar mais de um commit, será que dá? SIM!, o Cherry pick suporta esse tipo de ação.
Segue os mesmo passos do anterior, porém, invés de pegar apenas um HASH você precisa pegar o último e o primeiro (Calma, eu não digitei errado, o último realmente vem na frente) commit que você quer, e ira pegar todos que estiverem dentro dele, a sintaxe é extremamente fácil:

Devemos pegar os dois HASH (o ultimo e o primeiro):
Lembrando que o HASH-A (o ultimo) deve estar após o HASH-B (o primeiro), ou seja ser mais velho na linha do tempo.
git cherry-pick HASH-A HASH-B

Output

Conflitos:

Caso você queira cancelar um Cherry pick, é simples, passe a flag —abort:
git cherry-pick --abort

Para continuar, use a flag —continue:
git cherry-pick --continue

E para pular, —skip:
git cherry-pick --skip

Nesse post vimos como o Cherry pick é extremamente poderoso e importante de conhecer, em algum momento você vai precisar usar, e ele vai salvar a sua vida. É importante identificar quando é melhor utilizar o Cherry pick e quando usar o Merge, mas fique tranquilo por que isso vem com o tempo.


This content originally appeared on DEV Community and was authored by DEV Community


Print Share Comment Cite Upload Translate Updates
APA

DEV Community | Sciencx (2022-03-09T04:05:00+00:00) Cherry pick — Git e Github. Retrieved from https://www.scien.cx/2022/03/09/cherry-pick-git-e-github/

MLA
" » Cherry pick — Git e Github." DEV Community | Sciencx - Wednesday March 9, 2022, https://www.scien.cx/2022/03/09/cherry-pick-git-e-github/
HARVARD
DEV Community | Sciencx Wednesday March 9, 2022 » Cherry pick — Git e Github., viewed ,<https://www.scien.cx/2022/03/09/cherry-pick-git-e-github/>
VANCOUVER
DEV Community | Sciencx - » Cherry pick — Git e Github. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/03/09/cherry-pick-git-e-github/
CHICAGO
" » Cherry pick — Git e Github." DEV Community | Sciencx - Accessed . https://www.scien.cx/2022/03/09/cherry-pick-git-e-github/
IEEE
" » Cherry pick — Git e Github." DEV Community | Sciencx [Online]. Available: https://www.scien.cx/2022/03/09/cherry-pick-git-e-github/. [Accessed: ]
rf:citation
» Cherry pick — Git e Github | DEV Community | Sciencx | https://www.scien.cx/2022/03/09/cherry-pick-git-e-github/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.