tutorial qué permite nos hacer explicado español entre diferencias git git-merge git-squash

qué - Git rebase(Merge Squash) mi rama de función en otra rama



git squash (3)

Estoy buscando un comando git para que me ayude con mis funciones cuando estén listas para ingresar al Maestro. Este comando git aplastaría todos mis cambios en mi rama en una sola confirmación sobre el maestro. Hago esto hoy con:

git rebase origin/master git rebase -i HEAD~4

Donde 4 es el número de cometidos para aplastar. Sin embargo, esto requiere que sepa cuántos compromisos tengo. Hago esto hoy ejecutando:

git log HEAD...origin/master

y luego contando los compromisos.

Siento que debería haber una mejor manera de hacer esto. ¿O es así como todos los demás lo hacen también?


Creo que estás buscando git merge --squash . Debería incluir las confirmaciones de la rama de características en el maestro y las aplasta, para que pueda crear una única confirmación.


Esto es lo que hago, recopilado de mucha experiencia trabajando en equipos más grandes:

# Get latest from master git checkout master git pull --rebase # rebase master into your feature branch git checkout feature/my-feature git rebase master --preserve-merges # merge feature into master git checkout master # DO ONLY ONE of the 2 options below # if you only have one or (maybe) 2 commits in your feature branch git merge feature/my-feature # OR # this forces an empty merge commit (useful if we need to roll things back) git merge --no-ff feature/my-feature # if you use Github, this should also close the pull request git push origin master

¡Espero que esto ayude!


Todo lo que tienes que hacer es:

git checkout feature_branch git rebase master git checkout master git merge --squash feature_branch

Como los docs para git merge --squash dicen:

Genere el árbol de trabajo y el estado del índice como si hubiera ocurrido una fusión real (excepto la información de la fusión), pero en realidad no haga un commit o mueva el HEAD, ni registre $ GIT_DIR / MERGE_HEAD para hacer que el siguiente comando de git commit cree una fusión cometer. Esto le permite crear una única confirmación sobre la rama actual cuyo efecto es el mismo que fusionar otra rama (o más en el caso de un pulpo).

Después de eso, puedes git commit tus cambios que ya están en escena.