tipos tag qué practices existen etiquetas commits commands best git git-merge git-squash

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ó).