qué - git tags best practices
¿Cómo usar git merge--squash? (6)
Desea fusionarse con la opción de squash. Eso es si quieres hacerlo una rama a la vez.
git merge --squash feature1
Si desea fusionar todas las ramas al mismo tiempo que las confirmaciones individuales, primero realice una nueva rebase interactiva y aplaste cada característica, luego la fusión del pulpo:
git checkout feature1
git rebase -i master
Squash en un commit luego repita para las otras características.
git checkout master
git merge feature1 feature2 feature3 ...
La última fusión es una "fusión de pulpo" porque está fusionando muchas ramas a la vez.
Espero que esto ayude
Tengo un servidor Git remoto, aquí está el escenario que quiero realizar:
Para cada error / característica creo una rama Git diferente
Sigo enviando mi código en esa sucursal de Git con mensajes no oficiales de Git
En el repositorio superior tenemos que hacer una confirmación para un error con el mensaje oficial de Git
Entonces, ¿cómo puedo combinar mi sucursal con una sucursal remota para que solo reciban un compromiso para todos mis registros (incluso quiero enviar un mensaje de confirmación para esto)?
Digamos que su rama de corrección de errores se llama corrección de errores y desea fusionarla en el master
:
git checkout master
git merge --squash bugfix
git commit
Esto tomará todas las confirmaciones de la rama de bugfix
, las aplastará en 1 confirmación y las fusionará con la rama master
.
Explicación :
git checkout master
Cambia a tu rama master
.
git merge --squash bugfix
Toma todas las confirmaciones de la rama de bugfix
y las combina con su rama actual.
git commit
Crea una única confirmación a partir de los cambios combinados.
Omitir el parámetro -m
permite modificar un borrador de mensaje de confirmación que contiene todos los mensajes de sus confirmaciones aplastadas antes de finalizar su confirmación.
Lo que finalmente me aclaró esto fue un comment que mostraba que:
git checkout main
git merge --squash feature
es el equivalente de hacer:
git checkout feature
git diff main > feature.patch
git checkout main
patch -p1 < feature.patch
git add .
Cuando quiero fusionar una rama de función con 105 (!) Confirmaciones y hacer que todas queden aplastadas en una, no quiero obtener git rebase -i origin/master
porque necesito resolver por separado los conflictos de combinación para cada una de las confirmaciones intermedias (o al menos los que git no puede resolver por sí mismo). El uso de git merge --squash
me da el resultado que quiero, de una única confirmación para fusionar una rama de características completa. Y, solo necesito hacer como máximo una resolución de conflicto manual.
Si ya tiene git merge bugfix
en main
, puede aplastar su confirmación de fusión en uno con:
git reset --soft HEAD^1
git commit
newFeature
rama newFeature
en el master
con un compromiso personalizado:
git merge --squash newFeature && git commit -m ''Your custom commit message'';
Si en cambio, lo haces
git merge --squash newFeature && git commit
recibirá un mensaje de confirmación que incluirá todas las newFeature
rama newFeature
, que puede personalizar.
Para Git
Crear una nueva característica
a través de Terminal / Shell:
git checkout origin/feature/<featurename>
git merge --squash origin/feature/<featurename>
Esto no lo confirma, le permite revisarlo primero.
Luego confirme y finalice la función de esta nueva rama, y elimine / ignore la antigua (la que creó).