Одна простая модификация, предполагая, что все ваши PR должны быть включены upstream
(как предполагает существующий код), может быть:
co() {
git fetch upstream || return
git checkout --track "pr/${1##*/}" || return
git merge "upstream/pr/${1##*/}"
}
Это если вы хотите сохранить любые локальные изменения, которые могут у вас бытьсделано, хотя насильственное подталкивание других к пиар-ветке может немного испортить ситуацию.Если вы просто хотите сбросить ветку на удаленную, отбросив все локальные изменения:
co() {
git fetch upstream || return
git checkout --track "pr/${1##*/}" || return
git reset --hard "upstream/pr/${1##*/}"
}
... или, поместив локальные изменения поверх удаленных, а не отбрасываяих откровенно:
co() {
git fetch upstream || return
git checkout --track "pr/${1##*/}" || return
git rebase "upstream/pr/${1##*/}"
}
То, что нет единственно правильного способа сделать это, вероятно, хороший намек на то, что git upstream правильно сделал, что не делает все этоодна встроенная команда: человеческое суждение уместно для принятия решения о правильном действии на основе имеющегося сценария.