Tengo un repositorio privado en un servidor y regularmente lo reescribo / forzo, lo que hace que sea necesario restablecer la rama local en mi otra computadora con frecuencia. Por lo tanto, creé el siguiente alias "catchup", que permite hacer esto para la rama actual. A diferencia de la otra respuesta, no hay un nombre de rama codificado en este alias.
Agárrate fuerte.
[alias]
catchup = "!f(){ echo -n \"reset \\033[0;33m$(git symbolic-ref -q --short HEAD)\\033[0m to \\033[0;33m$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))\\033[0m? (Y/n) \"; read -r ans; if [ \"$ans\" = \"y\" -o \"$ans\" = \"Y\" -o -z \"$ans\" ]; then git reset --hard $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)); else echo \"catchup aborted\"; fi }; f"
Formateado correctamente (no funcionará con las nuevas líneas en .gitconfig) se ve así:
"
!f(){
echo -n \"reset \\033[0;33m$(git symbolic-ref -q --short HEAD)\\033[0m to \\033[0;33m$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))\\033[0m? (Y/n) \";
read -r ans;
if [ \"$ans\" = \"y\" -o \"$ans\" = \"Y\" -o -z \"$ans\" ]; then
git reset --hard $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD));
else
echo \"catchup aborted\";
fi
}; f
"
- El
\\033[0;33m
y \\033[0m
es para enfatizar la rama actual y corriente arriba con color.
$(git symbolic-ref -q --short HEAD)
es el nombre actual de la sucursal
$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))
es el flujo ascendente de la rama actual.
Dado que restablecer es una llamada potencialmente peligrosa (especialmente con la opción --hard, perderá los cambios no confirmados), primero le indica lo que está por hacer. Por ejemplo, si está en una rama dev-container con control remoto llamado qcpp / dev-container e ingresa git catchup
, se le pedirá:
restablecer dev-container a qcpp / dev-container? (S / n)
Si luego escribe y o simplemente presiona regresar, realizará el reinicio. Si ingresa algo más, el reinicio no se llevará a cabo.
Si desea ser súper seguro y prevenir mediante programación la pérdida de cambios no organizados / no confirmados, puede aumentar aún más el alias anterior con las comprobaciones correspondientes para el índice de diferencias .
La palabra de advertencia obligatoria: si está trabajando en un repositorio público en el que otras personas han basado su trabajo y necesita este alias, lo está haciendo mal ™ .