3.5 KiB
title | localeTitle |
---|---|
How to Use Git Rebase | Como usar o Git Rebase |
Você foi encaminhado para esta página para receber o seu PR? Role para a direita para Git Rebase na FCC então!
git rebase
é uma ferramenta extremamente útil que tem tudo a ver com a reescrita do git history, embora seja mais comumente usado para esmagar vários commits em um. Embora útil neste cenário, esta não é a única função que o comando git rebase
pode executar. Na verdade, ele se mostra muito mais útil quando usado para a função pretendida que seu nome sugere: essencialmente, rebase uma ramificação. Deixe-me explicar o que quero dizer com isso.
Vamos dizer que você tem um repositório como este:
--- Commit 5 ----------- auth branch
/
--- Commit 4 -------------- dev branch
/
--- Commit 1 ---- Commit 2 ---- Commit 3 -------------------------------- master branch
Se você quisesse mesclar a ramificação auth
com a ramificação dev
, o git lançaria um erro em você porque sua ramificação de auth
está desatualizada: ela não é responsável pela confirmação 4. Você precisará trazer sua ramificação para up-of-date. Até a presente data.
O Git fornece dois métodos para isso: o comando merge
e o comando rebase
. Para uma exploração do comando merge
, visite o artigo wiki relevante: Git Merge
Vamos executar o rebase
agora:
$ git checkout auth
$ git rebase dev
O repo agora ficará assim:
--- Commit 5 --- auth branch
/
--- Commit 4 --------------------- dev branch
/
--- Commit 1 ---- Commit 2 ---- Commit 3 --------------------------------------- master branch
Você vê o que aconteceu? Git essencialmente salvou os commits na ramificação auth
, removeu-os e depois os criou novamente com os mesmos commits após os commits no branch dev
. Isso significa que o Commit 4
só existe no ramo dev
e não no branch auth
! E isso é realmente tudo que existe para isso! Isso pode parecer um pouco confuso no começo, mas tente entender o diagrama. Esta é uma ferramenta extremamente útil.
Git-Rebase na FCC
Evitando conflitos de mesclagem
Se você contribuir para a base de código da FCC, ou estiver planejando fazer isso, sempre execute este comando antes de fazer qualquer alteração nos arquivos locais e enviá-los:
git pull --rebase upstream staging
Se você não tiver o upstream
configurado, execute este comando antes de executar o comando acima (o git lançará um erro porque não sabe o que é o upstream): git remote add upstream https://github.com/freecodecamp/freecodecamp.git
Isto irá puxar as últimas mudanças do ramo de preparo da FCC e rebase-las com o ramo de teste do seu garfo para que você não tenha nenhum conflito ao abrir o PR
Squashing
Se você tem vários commits que você quer esmagar em um, então siga as instruções para Squashing .