См. Также:
Как я могу увидеть, какие ветви Git отслеживают, какая ветка удаленной / восходящей?
Как я могу узнать, какую удаленную ветку отслеживает локальная ветка?
Нужно ли анализировать git config
вывод, или есть команда, которая сделает это для меня?
git
branch
git-remote
Readonly
источник
источник
git remote show origin
. Основным ответом на другой вопрос является сценарий bash, обернутый вокруг простого ответа, который может быть полезен для некоторых. Надеюсь, этот вопрос не будет полностью закрыт.Ответы:
Вот команда, которая дает вам все ветви отслеживания (сконфигурированные для 'pull'), смотрите:
Вам нужно пройтись по SHA и любым сообщениям коммита с длинным переносом, но это быстро набрать, и я выровняю ветви отслеживания вертикально в 3-м столбце.
Если вам нужна информация о конфигурации «pull» и «push» для каждой ветви, см. Другой ответ
git remote show origin
.Обновить
Начиная с git версии 1.8.5, вы можете показать ветку upstream с помощью
git status
иgit status -sb
источник
git branch -av
илиgit remote show origin
, что дает вам МНОГО данных, а не только отслеживаемый пультgit status
иgit status -sb
- поэтому после обновления до 1.8.5.x этот вопрос (и ответ) не имеет значения.Два варианта:
или
источник
%(refname:short)
это имя текущей ссылки в--format
.git help revisions
(одна из малоизвестных, но наиболее полезных частей документов) и поискupstream
.git diff `git rev-parse --abbrev-ref --symbolic-full-name @{upstream}`
echo 'git for-each-ref --format=\'%(refname:short) -> %(upstream:short)\' refs/heads/$1' > ~/bin/git-show-upstream; chmod +x ~/bin/git-show-upstream
git for-each-ref --format='%(upstream:short)' $(git rev-parse --symbolic-full-name SOMEBRANCH)
поток для какой-то другой ветви, вариант второго варианта: заменить SOMEBRANCH на имя ветви или «HEAD» для текущей ветвиЯ думаю, что
git branch -av
только говорит вам, какие ветки у вас есть и в каком коммите они находятся, оставляя вам возможность определить, какие удаленные ветки отслеживают локальные ветки.git remote show origin
явно говорит вам, какие ветви отслеживают, какие удаленные ветви. Вот пример выходных данных из репозитория с одним коммитом и удаленной веткой с именемabranch
:против
источник
git remote show origin
показывает вам локальные ветви и то, что они отслеживают для push и pull.origin
, хотя это может быть что угодно (например, несколько пультов, с разными ветвями, отслеживающими ветви с разных удаленных).Обновление: Ну, прошло несколько лет с тех пор, как я опубликовал это! Для моей конкретной цели сравнения HEAD и восходящего потока я сейчас использую
@{u}
, что является ярлыком, который ссылается на HEAD восходящей ветви отслеживания. (См. Https://git-scm.com/docs/gitrevisions#gitrevisions-emltbranchnamegtupstreamemegemmasterupstreamememuem ).Оригинальный ответ: я тоже сталкивался с этой проблемой. Я часто использую несколько пультов в одном репозитории, и легко забыть, какой из них отслеживает ваша текущая ветка. И иногда это полезно знать, например, когда вы хотите посмотреть свои локальные коммиты через
git log remotename/branchname..HEAD
.Все это хранится в переменных git config, но вам не нужно анализировать выходные данные git config. Если вы вызываете git config, за которым следует имя переменной, она просто напечатает значение этой переменной, анализ не требуется. Имея это в виду, вот несколько команд для получения информации о настройке отслеживания вашей текущей ветки:
В моем случае, так как меня интересует только имя моего текущего пульта, я делаю это:
источник
git name-rev --name-only HEAD
не скажет вам, на какой ветке вы находитесь. Для этого я только что использовалgit branch | grep '^\*' | cut -d' ' -f2
@{u}
псевдоним / ярлык, и это именно то, что я искал! Нет смысла сравнивать с основной веткой, если вы хотите только определить, нужно ли вам тянуть или нет.@{u}
это бомба. И существует с 1.7.0, что означает, что если он не доступен в git, который кто-то использует в 2018 году, он, вероятно, должен перейти на обновление.Местные филиалы и их пульты.
Все филиалы и трекинг пультов.
Посмотрите, где локальные ветви явно настроены для push и pull.
источник
Это покажет вам ветку, на которой вы находитесь:
Это покажет только текущую ветку:
например:
Вы можете узнать URL пульта, который используется текущей веткой, с которой вы работаете:
например:
источник
Вы можете использовать
git checkout
, т.е. «проверить текущую ветку». Это неоперация с побочными эффектами для отображения информации об отслеживании, если она существует, для текущей ветви.источник
Я не знаю, считается ли это разбором выходных данных git config, но это определит URL удаленного, который мастер отслеживает:
источник
git config branch.$(git symbolic-ref -q HEAD).remote
если вы просто хотите, чтобы имя удаленного отслеживаемого текущей ветви -git config remote.$(git config branch.$(git symbolic-ref -q HEAD).remote).url
для URL.--short
опцию, чтобы она работала. Итак, для получения удаленного имени текущей ветви:git config branch.$(git symbolic-ref -q --short HEAD).remote
и для получения URL-адреса удаленного текущей ветви:git config remote.$(git config branch.$(git symbolic-ref -q --short HEAD).remote).url
Еще один способ
Это даст вам
источник
Еще один простой способ заключается в использовании
cat .git/config
в git-репоЭто будет список деталей для местных отделений
источник
type .git/config
вместо,cat .git/config
конечно, в простой командной строке ..Другой метод (спасибо osse), если вы просто хотите узнать, существует ли он:
источник
git branch -vv | grep 'BRANCH_NAME'
git branch -vv
: Эта часть покажет все локальные ветви вместе с их веткой вверх по течению.grep 'BRANCH_NAME'
: Он отфильтрует текущую ветку из списка веток.источник
перечислит все филиалы, включая удаленные.
источник
Перечисляет как локальные, так и удаленные филиалы:
Вывод:
источник
Выходные данные фарфора git-status (машиночитаемые) v2 выглядят так:
И получить ветку только вверх по течению:
Если у ветви нет восходящего потока, приведенная выше команда выдаст пустой вывод (или потерпит неудачу с
set -o pipefail
).источник
Если вы хотите найти восходящую ветку для любой ветви (в отличие от той, на которой вы находитесь), вот небольшое изменение в ответе @ cdunn2001:
git rev-parse --abbrev-ref --symbolic-full-name YOUR_LOCAL_BRANCH_NAME@{upstream}
Это даст вам имя удаленной ветви для локальной ветви с именем
YOUR_LOCAL_BRANCH_NAME
.источник
Вы можете попробовать это:
branch_name
нужно заменить на вашу веткуисточник
git remote show origin
- если он называетсяmerges
илиconfigure
?Я использую этот псевдоним
тогда
обратите внимание, что скрипт также можно использовать для настройки отслеживания.
Больше отличных псевдонимов на https://github.com/orefalo/bash-profiles
источник
Я использую EasyGit (он же «например») в качестве суперлегкого обертки поверх (или вдоль) Git. EasyGit имеет подкоманду «info», которая дает вам все виды супер полезной информации, включая текущую ветку удаленного отслеживания веток. Вот пример (где текущая ветвь называется «foo»):
источник
Улучшая этот ответ , я придумал эти
.gitconfig
псевдонимы:источник
Если вы используете Gradle,
источник
Следующая команда будет использовать удаленный источник, на который ссылается текущий форк
Для добавления удаленного пути,
источник