J'ai un dépôt privé sur un serveur et je le rebase / le pousse régulièrement, ce qui rend nécessaire de réinitialiser souvent la branche locale sur mon autre ordinateur. J'ai donc créé l'alias suivant "catchup", ce qui permet de le faire pour la branche courante. Contrairement à l'autre réponse, il n'y a pas de nom de branche codé en dur dans cet alias.
Tiens bon.
[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"
Correctement formaté (ne fonctionnera pas avec les sauts de ligne dans .gitconfig), il ressemble à ceci:
"
!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
"
- Le
\\033[0;33m
et \\033[0m
sert à souligner la branche actuelle et en amont avec de la couleur.
$(git symbolic-ref -q --short HEAD)
est le nom de la branche actuelle
$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))
est en amont de la branche actuelle.
Étant donné que la réinitialisation est un appel potentiellement dangereux (en particulier avec l'option --hard, vous perdrez toutes les modifications non validées), il vous indique d'abord ce qu'il est sur le point de faire. Par exemple, si vous êtes sur une branche dev-container avec une télécommande appelée qcpp / dev-container et que vous entrez git catchup
, vous serez invité:
réinitialiser dev-container à qcpp / dev-container? (O / n)
Si vous tapez ensuite y ou appuyez simplement sur retour, il effectuera la réinitialisation. Si vous saisissez autre chose, la réinitialisation ne sera pas effectuée.
Si vous voulez être super sûr et empêcher par programmation de perdre des modifications non stadifiées / non validées, vous pouvez pimper l'alias ci-dessus plus loin en vérifiant les différences d'index .
Le mot d'avertissement obligatoire: si vous travaillez sur un référentiel public sur lequel d'autres personnes ont basé leur travail et que vous avez besoin de cet alias, vous vous trompez ™ .