У мене є приватне репо на сервері і регулярно перезавантажувати / натискати на нього, що робить необхідним часто скидати локальну гілку на іншому моєму комп’ютері. Тому я створив наступний псевдонім "підхоплення", який дозволяє робити це для поточної гілки. На відміну від іншої відповіді, у цьому псевдонімі немає назви твердо кодованої гілки.
Тримайся.
[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"
Правильно відформатований (не працюватиме з новинками в .gitconfig), це виглядає приблизно так:
"
!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;33m
І \\033[0m
є для виділення поточної гілки і вище з кольором.
$(git symbolic-ref -q --short HEAD)
- поточна назва філії
$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))
є вище за течією поточної гілки.
Оскільки скидання - це потенційно небезпечний виклик (особливо з опцією --hard, ви втратите будь-які неспроможні зміни), він спочатку повідомляє вам, що він має робити. Наприклад, якщо ви перебуваєте у відділенні dev-контейнера з віддаленим іменем qcpp / dev-контейнер, і ви введете git catchup
, вам буде запропоновано:
скинути dev-контейнер до qcpp / dev-container? (Так / н)
Якщо ви введете y або просто натисніть return, він виконає скидання. Якщо ви введете що-небудь інше, скидання не буде здійснено.
Якщо ви хочете бути надзвичайно безпечними та програматично запобігати втраті нестандартних / невідомих змін, можете додатково згорнути вищезгаданий псевдонім за допомогою перевірок на діф-індекс .
Обов’язкове слово попередження: Якщо ви працюєте над загальнодоступним сховищем, інші люди базуються на роботі, і вам потрібен цей псевдонім, ви робите це неправильно ™ .