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.