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?

¿Fue útil?

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é.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top