freeCodeCamp/guide/portuguese/miscellaneous/how-to-use-git-rebase/index.md

53 lines
3.5 KiB
Markdown
Raw Normal View History

---
title: How to Use Git Rebase
localeTitle: 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](//forum.freecodecamp.com/t/understand-how-to-use-git-merge/13215)
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 ![:slight_smile:](//forum.freecodecamp.com/images/emoji/emoji_one/slight_smile.png?v=2 ": slight_smile:")
### Squashing
Se você tem vários commits que você quer esmagar em um, então siga as instruções para **[Squashing](//forum.freecodecamp.com/t/how-to-squash-multiple-commits-into-one-with-git/13231)** .