Если вы посмотрите на справочную страницу для git-rev-parse
, вы увидите следующий синтаксис:
<branchname>@{upstream}
, например master@{upstream}
, @{u}
Суффикс @{upstream}
к ответвлению (сокращенная форма <branchname>@{u}
) относится к ветви, над которой устанавливается ветвь, указанная в Branchname.Пропущенное имя-ответвление по умолчанию соответствует текущему.
Следовательно, чтобы найти восходящий поток ветви master
, вы должны сделать:ветку, вы можете сделать что-то вроде:
while read branch; do
upstream=$(git rev-parse --abbrev-ref $branch@{upstream} 2>/dev/null)
if [[ $? == 0 ]]; then
echo $branch tracks $upstream
else
echo $branch has no upstream configured
fi
done < <(git for-each-ref --format='%(refname:short)' refs/heads/*)
# Output:
# master tracks origin/master
# ...
Это чище, чем парсинг ссылок и настроек вручную.