Переименуйте git remote name в "upstream"
У меня небольшая проблема с настройкой Git. Я работаю с разветвленными хранилищами довольно часто. Чтобы раскошелиться на них, я использую кнопку на GitHub. После этого команда git remote -v
показывает мне "происхождение" и "оригинал-имя пользователя".
"original-username" теперь является веткой upstream, из которой я могу извлекать изменения и создавать запросы извлечения. Я хотел бы, чтобы это назвали "вверх по течению", хотя. Это облегчит использование одних и тех же команд на разных вилах, и я даже могу создать псевдонимы с этим.
Так что я знаю, что могу изменить имя удаленного с git remote rename original-username upstream
, но это означало бы, что я должен делать это для каждой вилки, каждый раз, когда я получаю эту вилку на машине, и мне нужно сначала сделать git remote -v и т. д., и я ленив:P
Кроме того, оригинал-имя пользователя отличается на каждой вилке.
Итак, мой вопрос:
Есть ли возможность переименовать удаленную ветку (из разных имен) в восходящую, возможно, с помощью классной функции псевдонима или небольшого скрипта?
Моя мечта будет примерно такой:
[alias]
setupstream = "!f(){ git remote rename $oldupstream upstream; };f"
$oldupstream
должен быть получен автоматически, каким-то образом.
1 ответ
Делая предположение, что в локальном репозитории будут настроены только два удаленных, где один origin
а другой - тот, который вы хотите переименовать, что-то вроде этого должно работать.
setupstream = "!f() { \
local rem=$(git remote | grep -v '^origin$'); \
if [ \"$(wc -l <<<\"$rem\")\" -gt 1 ]; then \
echo 'Too many remotes.' >&2; \
return; \
fi; \
if [ -z \"$rem\" ]; then \
echo 'No non-origin remote found.' >&2; \
return; \
fi; \
if [ \"$rem\" = upstream ]; then \
echo '\"upstream\" remote already exists.'; \
return; \
fi; \
git remote rename \"$rem\" upstream; \
echo \"Renamed $rem to upstream.\"; \
}; f"