Ho un repository privato su un server e regolarmente reindirizzare / forzare ad esso, il che rende necessario reimpostare spesso il ramo locale sull'altro mio computer. Ho quindi creato il seguente alias "catchup", che consente di farlo per il ramo corrente. A differenza dell'altra risposta, non esiste un nome di ramo codificato in questo alias.
Tieniti forte.
[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"
Formattato correttamente (non funzionerà con le nuove righe in .gitconfig) è simile al seguente:
"
!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
"
- L'
\\033[0;33m
e \\033[0m
serve per enfatizzare l'attuale ramo e a monte con il colore.
$(git symbolic-ref -q --short HEAD)
è il nome della filiale corrente
$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))
è l'upstream del ramo corrente.
Poiché il ripristino è una chiamata potenzialmente pericolosa (specialmente con l'opzione --hard, perderai tutte le modifiche non confermate), prima ti dice cosa sta per fare. Ad esempio, se sei sul ramo dev-container con telecomando chiamato qcpp / dev-container e inserisci git catchup
, ti verrà richiesto:
resettare dev-container su qcpp / dev-container? (Y / n)
Se poi digiti y o premi semplicemente Invio, eseguirà il ripristino. Se si inserisce qualcos'altro, il ripristino non verrà eseguito.
Se vuoi essere super sicuro e prevenire a livello di programmazione la perdita di modifiche non messe in scena / non impegnate, puoi sfruttare ulteriormente l'alias di cui sopra con i controlli secondo l'indice diff .
Avvertenza obbligatoria: se stai lavorando su un archivio pubblico su cui altre persone hanno basato il lavoro e hai bisogno di questo alias, lo stai facendo in modo sbagliato ™ .