Git ramificación: Ahí y Atrás otra vez

Cuando trabajo en una function, muy a menudo tropiezo con ciertas partes en la base de código que se pueden mejorar. Quiero que esas partes sean corregidas, pero no quiero que se arreglen en la twig de características actual, ya que simplemente están relacionadas, si es que lo están.

Por lo tanto, hago lo siguiente:

  1. git add -A
  2. git commit -m "WIP. Be back soon..."
  3. git checkout master
  4. git pull origin master
  5. git checkout -b quickfix-something
  6. … hacer mejoras en el código …
  7. git commit -m "Fix this and that"
  8. git push my_origin quickfix-something
  9. hub pull-request -b origin:master -h my_origin:quickfix-something (esto es solo apertura de relaciones públicas específicas de GitHub)
  10. git checkout my_feature_branch
  11. git reset --soft HEAD~1
  12. … sigo trabajando en mi twig de características …

¡Pero esto lleva tanto time!

En cambio, quiero hacer algo como esto:

  1. git back-and-forth --start "my_new_branch"
  2. … hacer mejoras en el código …
  3. git back-and-forth --finish -m "Fix this and that"
  4. … sigo trabajando en mi twig de características …

Sé que git-flow hace algo como eso, pero no quiero llevar todo su peso conmigo, a less que haya una manera mínima de configurarlo como yo quiero. Además, si no me equivoco, no admite la apertura automática de las relaciones públicas en GitHub.

Antes de escribir mi propio guión para hacer lo mismo, estas son mis preguntas:

  1. ¿Hay alguna herramienta git existente que haga lo que quiero?
  2. a less que sea 1, ¿hay algún otro enfoque para hacer lo que quiero, solo con less pasos?

Escribir su propio guión parece ser su mejor apuesta para el # 1. Es posible que pueda combinar grupos de commands como alias simples para evitar escribir un guión completo.

En cuanto al n. ° 2, puedes eliminar algunos pasos usando git stash y no revisando master.

  1. git stash
  2. git fetch
  3. git checkout -b quickfix-something origin/master
  4. … hacer mejoras en el código …
  5. git commit -am "Fix some stuff"
  6. git push my_origin quickfix-something
  7. hub pull-request ...
  8. git checkout my_feature_branch
  9. git stash pop
  10. … sigo trabajando en mi twig de características …

Tu pregunta original tiene 10 commands. Esto lo acorta por 2 commands a 8.


A continuación hay otra opción que pensé mientras intentaba eliminar commands. No ahorra ningún tipo de escritura y seguro hace que la vida sea mucho más complicada en comparación con la solución anterior. Por favor no lo uses

Locura alternativa: el método de rebase. No use esto para reales, a less que le guste mezclar LSD y motosierras. Esto podría generar conflictos en la rebase dependiendo de los cambios ascendentes relativos a sus 'mejoras'.

  1. git stash
  2. … hacer mejoras en el código … sí, hazlo en tu twig de características
  3. git commit -am "Fix some stuff i need elsewhere"
  4. git fetch
  5. git rebase HEAD^ --onto origin/master
  6. git push my_origin my_feature_branch:quickfix-something
  7. hub pull-request ...
  8. git reset --hard ORIG_HEAD^
  9. git stash pop
  10. … continuar trabajando en la twig de características …