53 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| 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 
 | |
| 
 | |
| ### 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)** . |