Git rebase (Merge Squash) mi rama característica en otra rama
-
09-12-2019 - |
Pregunta
Estoy buscando un comando de git que me ayude con mis ramas de funciones cuando estén listas para ingresar a Master.Este comando de git agruparía todos mis cambios en mi rama en una única confirmación además del maestro.Hago esto hoy con:
git rebase origin/master
git rebase -i HEAD~4
Donde 4 es el número de confirmaciones para squash.Sin embargo, esto requiere que sepa cuántas confirmaciones tengo.Hago esto hoy ejecutando:
git log HEAD...origin/master
y luego contando las confirmaciones.
Siento que debería haber una mejor manera de hacer esto.¿O es así como lo hacen todos los demás también?
Solución
Todo lo que tienes que hacer es:
git checkout feature_branch
git rebase master
git checkout master
git merge --squash feature_branch
como el documentos para git merge --squash
decir:
Produzca el árbol de trabajo y el estado del índice como si hubiera ocurrido una fusión real (excepto por la información de la fusión), pero en realidad no realice una confirmación ni mueva el HEAD, ni registre $GIT_DIR/MERGE_HEAD para provocar que el siguiente comando de confirmación de git cree una fusión. comprometerse.Esto le permite crear una única confirmación encima de 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
sus cambios que ya están en escena.
Otros consejos
Esto es lo que hago, reunido 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!
Creo que estás buscando git merge --squash
.Debe traer los compromisos de su sucursal de su característica al Maestro y los aplasta, para que pueda crear una única comité.