Mam prywatne repozytorium na serwerze i regularnie dokonuję na nim zmiany bazy / wymuszam, co wymaga częstego resetowania lokalnego oddziału na innym komputerze. Dlatego stworzyłem następujący alias „catchup”, który pozwala to zrobić dla bieżącej gałęzi. W przeciwieństwie do drugiej odpowiedzi w tym aliasie nie ma na stałe wpisanej nazwy oddziału.
Trzymaj się mocno.
[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"
Prawidłowo sformatowane (nie będzie działać z nowymi wierszami w .gitconfig) wygląda następująco:
"
!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
"
\\033[0;33mI \\033[0mjest dla podkreślenia aktualnej gałęzi i upstream kolorem.
$(git symbolic-ref -q --short HEAD) jest bieżącą nazwą oddziału
$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)) jest powyżej bieżącego oddziału.
Ponieważ reset jest potencjalnie niebezpiecznym połączeniem (szczególnie z opcją --hard, utracisz wszelkie nieprzyjęte zmiany), najpierw mówi ci, co zamierza zrobić. Na przykład, jeśli korzystasz z gałęzi dev-container ze zdalnym qcpp / dev-container i wejdziesz git catchup, pojawi się monit:
zresetować dev-container do qcpp / dev-container? (T / n)
Jeśli następnie wpiszesz y lub po prostu naciśniesz return, nastąpi reset. Jeśli wpiszesz cokolwiek innego, reset nie zostanie przeprowadzony.
Jeśli chcesz być super bezpieczny i programowo zapobiegać utracie niestabilnych / niezaangażowanych zmian, możesz dodatkowo ulepszyć powyższy alias, sprawdzając indeks różnic .
Obowiązkowe słowo ostrzeżenia: jeśli pracujesz na publicznym repozytorium, na którym pracują inni ludzie i potrzebujesz tego aliasu, robisz to źle ™ .