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

53 lines
3.5 KiB
Markdown
Raw Normal View History

2018-10-12 19:37:13 +00:00
---
title: How to Use Git Rebase
localeTitle: Cómo usar Git Rebase
---
**¿Fue referido a esta página para que su PR sea aceptado? ¡Desplázate a la derecha hasta Git Rebase en FCC!**
`git rebase` es una herramienta extremadamente útil que trata sobre la reescritura del historial de git, aunque se usa más comúnmente para _aplastar_ múltiples confirmaciones en una. Aunque es útil en este escenario, esta no es la única función que puede realizar el comando `git rebase` . De hecho, se demuestra que es mucho más útil cuando se usa para la función prevista que su nombre sugiere: básicamente para _volver_ a _escribir_ una rama. Déjame explicarte lo que quiero decir con eso.
Digamos que tienes un repositorio como este:
```
--- Commit 5 ----------- auth branch
/
--- Commit 4 -------------- dev branch
/
--- Commit 1 ---- Commit 2 ---- Commit 3 -------------------------------- master branch
```
Si desea combinar la rama `auth` con la rama `dev` , git le lanzará un error porque su rama `auth` está desactualizada: no tiene en cuenta el Commit 4. Tendrá que actualizar su sucursal. hasta la fecha.
Git le proporciona dos métodos para hacer esto: el comando de `merge` y el comando de `rebase` . Para una exploración del comando de `merge` , visite el artículo relevante de la wiki: [Git Merge](//forum.freecodecamp.com/t/understand-how-to-use-git-merge/13215)
Vamos a ejecutar `rebase` ahora:
```
$ git checkout auth
$ git rebase dev
```
El repositorio ahora se verá así:
```
--- Commit 5 --- auth branch
/
--- Commit 4 --------------------- dev branch
/
--- Commit 1 ---- Commit 2 ---- Commit 3 --------------------------------------- master branch
```
¿Ves lo que pasó? Básicamente, Git guardó las confirmaciones en la rama de `auth` , las "eliminó" y luego las creó nuevamente con las mismas confirmaciones _después de_ las confirmaciones en la rama `dev` . ¡Esto significa que `Commit 4` solo existe en la rama `dev` y no en la rama `auth` ! Y eso es realmente todo lo que hay que hacer! Esto puede parecer un poco confuso al principio, pero trate de entender el diagrama. Esta es una herramienta extremadamente útil.
## Git-Rebase en FCC
### Prevención de conflictos de fusión
Si contribuye al código base de la FCC, o planea hacerlo, siempre ejecute este comando antes de realizar cambios en sus archivos locales y presionarlos:
`git pull --rebase upstream staging`
Si no tiene una configuración en `upstream` ascendente, ejecute este comando antes de ejecutar el comando anterior (git generará un error porque no sabe qué es en sentido ascendente): `git remote add upstream https://github.com/freecodecamp/freecodecamp.git`
Esto extraerá los últimos cambios de la rama de preparación de la FCC y los volverá a ajustar con la rama de preparación de su fork para que no tenga ningún conflicto al abrir el PR ![:slight_smile:](//forum.freecodecamp.com/images/emoji/emoji_one/slight_smile.png?v=2 ": slight_smile:")
### Aplastamiento
Si tiene varias confirmaciones que desea aplastar en una, siga las instrucciones para **[Aplastar](//forum.freecodecamp.com/t/how-to-squash-multiple-commits-into-one-with-git/13231)** .