Git Rebase y Branch Conmutación

Rebase

Rebase es el proceso de cambiar el historial de confirmaciones de una rama aplicando confirmaciones de otra rama. En lugar de usar merge para combinar cambios, rebase le permite realizar insert nuevas confirmaciones en el historial de confirmaciones de la rama actual sin crear confirmaciones de combinación.

Por ejemplo, supongamos que tiene dos ramas: feature-branch y main. Está trabajando feature-branch y desea aplicar las últimas confirmaciones en main su rama actual. Puedes usar rebase para lograr esto:

git checkout feature-branch  
git rebase main  

Cuando ejecute este comando, Git tomará las confirmaciones main y las aplicará a feature-branch. Esto significa que todas las confirmaciones feature-branch aparecerán después de las confirmaciones de main. El resultado es un historial de confirmación más limpio y legible en feature-branch.

Sin embargo, al usar rebase, es importante tener en cuenta que cambiar el historial de confirmaciones puede afectar las ramas compartidas públicamente. Por lo tanto, si ya envió confirmaciones desde su rama actual a un repositorio remoto, generalmente se recomienda no usar rebase en esa rama para evitar conflictos y un historial de confirmaciones desordenado.

 

Branch Traspuesta

El cambio de rama en Git se refiere al proceso de pasar de una rama a otra. Cuando cambias de rama, Git mueve el puntero HEAD a la nueva rama, permitiéndote trabajar en esa rama y hacer cambios sin afectar otras ramas.

Por ejemplo, supongamos que tiene sucursales feature-branch y main. Para cambiar a feature-branch, usaría el siguiente comando:

git checkout feature-branch

Después de cambiar de sucursal, puede realizar cambios en el directorio de trabajo. Todos los comandos commit, add y checkout se aplicarán a la rama actual.

Por ejemplo, si agrega un nuevo archivo y lo confirma feature-branch, solo esa rama contendrá la confirmación, mientras que main no se verá afectada. Esto le permite desarrollar funciones separadas, corregir errores o trabajar en diferentes versiones del código de forma independiente. Puede cambiar entre ramas cuando sea necesario para trabajar en cada rama por separado.