Eu tenho um repositório particular em um servidor e regularmente o reencaminhao / force-push para ele, o que torna necessário redefinir a filial local no meu outro computador com frequência. Por isso, criei o seguinte apelido "catchup", que permite fazer isso para o ramo atual. Diferente da outra resposta, não há nome de filial codificado nesse alias.
Segure firme.
[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"
Formatado corretamente (não funcionará com as novas linhas em .gitconfig), fica assim:
"
!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
"
- O
\\033[0;33me \\033[0mé para enfatizar a ramificação atual e a montante com cores.
$(git symbolic-ref -q --short HEAD) é o nome do ramo atual
$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)) é o montante da ramificação atual.
Como a redefinição é uma chamada potencialmente perigosa (especialmente com a opção --hard, você perderá as alterações não confirmadas), ela primeiro informa o que está prestes a fazer. Por exemplo, se você estiver no dev-container da filial com controle remoto chamado qcpp / dev-container e entrar git catchup, será solicitado:
redefinir dev-container para qcpp / dev-container? (S / n)
Se você digitar y ou apenas pressionar return, ele fará a redefinição. Se você inserir mais alguma coisa, a redefinição não será realizada.
Se você deseja ser super seguro e evitar programaticamente a perda de alterações não-encenadas / não confirmadas, pode usar o apelido acima ainda mais com as verificações de acordo com o índice diff .
A palavra obrigatória de aviso: se você estiver trabalhando em um repositório público em que outras pessoas se basearam no trabalho, e você precisar desse alias, estará fazendo algo errado ™ .