Pull, rebase, push, en un command (o solo unos pocos)

Cuando uso Git, a menudo me encuentro haciendo lo siguiente cuando trabajo en master :

 # work work work... $ git checkout -b temp $ git commit -a -m 'more work done' $ git checkout master $ git pull origin master # turns out master was updated since my previous pull $ git checkout temp # I don't want a merge commit for a simple bugfix $ git rebase master $ git checkout master $ git merge temp $ git push origin master $ git branch -d temp 

… y me canso de hacer esto. ¿Hay alguna manera de hacer este baile sin todas las cajas, y preferiblemente sin (manualmente) crear la twig temporal?

Si no te importa no crear una twig llamada temp , puedes hacer lo siguiente todo en master :

 git commit -a -m 'more work done' git fetch origin git rebase origin/master 

… o equivalente:

 git commit -a -m 'more work done' git pull --rebase origin master 

Sin embargo, si desea mantener la twig de temp , aún puede hacer que esto sea un poco más corto al no verificar el master solo para pull : solo tiene que fetch y luego volver a establecer la base de su bifurcación en el origin/master :

 # work work work... $ git checkout -b temp $ git commit -a -m 'more work done' $ git fetch origin # It looks like origin/master was updated, so: $ git rebase origin/master # Then when you finally want to merge: $ git checkout master $ git merge temp $ git push origin master $ git branch -d temp 

La respuesta de Sehe me restring que puedes replace:

 $ git fetch origin $ git rebase origin/master 

… con:

 $ git pull --rebase origin master 

… que es casi equivalente. La diferencia es que cuando ejecutas git fetch origin , todas tus twigs de rastreo remotas para el origin se actualizarán, mientras que cuando extraes una twig particular del origin , ninguna de ellas es – es solo la reference temporal FETCH_HEAD que se actualiza. Personalmente prefiero ejecutar un command extra ( git fetch origin ) y ver todas las twigs remotas que han cambiado en la salida.

Al less puedes optimizar el rebase: git pull --rebase

No estoy exactamente seguro de cómo te gustan las cosas, pero me gusta mi flujo de trabajo de esta manera:

 git checkout -b temp git commit -a -m 'more work done' git pull --rebase origin master 

De esa manera mantengo mi enfoque en la twig a mano.

Luego más tarde, lo hago

 git checkout master git pull origin master git merge temp 

etc.