En un intento de lograr git nirvana, me paso el día aprendiendo cómo aprovechar rebase para situaciones en las que actualmente me uno.¿Cómo puedo usar git rebase sin requerir un empuje forzado?
Al ejecutar a través de lo que considero que es un flujo de git 101 (que deletreo a continuación), tengo que push --force
al empujar mis cambios de nuevo al origen.
yo no soy el único - Yo sé que esto está cubierto de tierra (ver 1, 2, 3, 4, 5), y entiendo las razones técnicas por qué es necesaria una fuerza. Mi problema es este --- hay muchas (muchas) entradas de blog cantando los elogios de rebase y cómo ha cambiado sus vidas (ver 1, 2, 3, 4 para enumerar algunas), pero ninguno de ellos menciona que push --force
es parte de su flujo. Sin embargo, casi todas las respuestas a las preguntas existentes sobre el stackoverflow dicen cosas como "sí, si vas a rebasear, tienes que usar push --force
".
Dado el número y la religiosidad de los defensores de rebase, Tengo que creer que usar 'push --force' no es una parte inherente de un flujo de rebase, y que si uno a menudo tiene que forzar sus empujes, están haciendo algo mal.
push --force
es un bad thing.
Así que aquí está mi flujo. ¿De qué manera podría lograr los mismos resultados sin una fuerza?
Ejemplo simple
dos ramas:
- v1.0 - una rama de lanzamiento, incluye solamente parches
- maestro - todo para la próxima versión.
Tengo algunas confirmaciones de parches y algunas confirmaciones para la próxima versión.
me gustaría incorporar los parches en mi maestro para que no están perdidos para la próxima versión. Pre-iluminación que había simplemente:
git checkout master
git merge v1.0
Pero ahora estoy tratando
git checkout master
git rebase v1.0
así que ahora estoy aquí:
Tiempo para:
git push
Sin dados.
Gracias CG, creo que "usarlo para crear fusiones de avance rápido" es la clave. No se aplica a mi caso anterior donde tengo dos ramas vivas: una rama de desarrollo y una rama de lanzamiento, pero parece aplicarse muy bien para ramas temáticas temporales que solo son necesarias por un período limitado de tiempo, y luego pueden ser borrado una vez que están fusionados. Gracias de nuevo. –
Entiendo esto, pero la pregunta original permanece. Creo que la respuesta real es la dada por [@Fabien Quatravaux] (http://stackoverflow.com/questions/11058312/how-can-i-use-git-rebase-without-requiring-a-forced-push# 11137857) – IsmailS
Bueno, todavía tendrías que presionar la rama 1.0, ¿no? Al menos, así es como las cosas tienden a resultar para mí todo el tiempo. El método de Fabiens evitaría que eso sucediera. – joerx