回答:
Github.comのアップストリームGitリポジトリからチェックアウトしたPuppetの例を使用して...
$ git remote show origin
* remote origin
Fetch URL: git://github.com/reductivelabs/puppet.git
Push URL: git://github.com/reductivelabs/puppet.git
HEAD branch: master
Remote branches:
0.24.x tracked
0.25.x tracked
2.6.x tracked
master tracked
next tracked
primordial-ooze tracked
reins-on-a-horse tracked
testing tracked
testing-17-march tracked
testing-18-march tracked
testing-2-april tracked
testing-2-april-midday tracked
testing-20-march tracked
testing-21-march tracked
testing-24-march tracked
testing-26-march tracked
testing-29-march tracked
testing-31-march tracked
testing-5-april tracked
testing-9-april tracked
testing4268 tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
次に、次を実行する場合:
$ git checkout -b local_2.6 -t origin/2.6.x
Branch local_2.6 set up to track remote branch 2.6.x from origin.
Switched to a new branch 'local_2.6'
そして最後にgit remote show origin
コマンドを再実行すると、下の近くに次のように表示されます。
Local branches configured for 'git pull':
local_2.6 merges with remote 2.6.x
master merges with remote master
git fetch
かgit pull
リモートブランチへの更新がクローンリポジトリで追跡されるという点で追跡されます。ローカルブランチは、リモートブランチのローカルブランチであり、リモートブランチへの更新は追跡され、適切なコマンドが与えられたときにマージされます。ローカルブランチを作成するときに '-t'オプションを明示的に含めて、元のブランチを追跡するようにします。ローカルブランチは別のローカルブランチも追跡できるため、リモートブランチである必要はありません。
すべてのブランチ:
git branch -avv
ローカルブランチのみ:
git branch -lvv
リモートブランチのみ:
git branch -rvv
すべてのブランチとアップストリームブランチの名前が表示されます。
git branch -lvv
上流の役に立つかもしれないとちょうど支部ショーを
git branch -vv
私のために働く
Jeremy Bouseは、git remote show
追跡情報の表示方法を説明しています。人間が消費する情報のみが必要な場合は、これで十分です。
自動化されたコンテキスト(スクリプトなど)で情報を使用する予定がある場合は、git for-each-ref
代わりに下位レベル(「配管」)を使用する必要があります。
% git remote show origin
* remote origin
⋮
Local branches configured for 'git pull':
master merges with remote master
pu merges with remote pu
⋮
% git for-each-ref --format='%(refname:short) <- %(upstream:short)' refs/heads
master <- origin/master
pu <- origin/pu
git for-each-ref
学ん%(upstream)
でトークンをGitリポジトリ1.6.3。Gitの以前のバージョンでは、追跡情報を抽出する必要がgit config branch.<name>.remote
ありますgit config branch.<name>.merge
(おそらくgit for-each-ref
、各ローカルブランチ名のコマンドをビルドするために使用します)。
git for-each-ref --format=$'\n'' '' '' '' '' '' ''/%(refname:short);%(upstream:short)' refs/heads | tr ';' $'\n'
特定の分岐については、使用することができますgit rev-parse
し@{u}
、または@{upstream}
ブランチ名の接尾辞、例えば:
$ git rev-parse --symbolic-full-name master@{u}
refs/remotes/github-mhl/master
...または省略形の場合は、追加 --abbrev-ref
$ git rev-parse --symbolic-full-name --abbrev-ref master@{u}
github-mhl/master
通常branch@{upstream}
、コミットが予想される場所であればどこでも構文を使用できます。
git rev-parse --symbolic-full-name HEAD
対git rev-parse --symbolic-full-name HEAD@{u}
、感謝を!
次のシェルスクリプト(名前git-tracks
)を使用して、現在のブランチによって追跡されているリモートブランチを表示します。
#!/bin/sh -e
branch=$(git symbolic-ref HEAD)
branch=${branch##refs/heads/}
remote=$(git config "branch.${branch}.remote")
remoteBranch=$(git config "branch.${branch}.merge")
remoteBranch=${remoteBranch##refs/heads/}
echo "${remote:?}/${remoteBranch:?}"
これには前述のを使用することもできgit for-each-ref
ますが、直接アクセスは現在のブランチの出力をフィルタリングするよりもいくぶん簡単であることがわかりました。
set -e
は知っていますが、通常は明示的なチェックに固執します。しかし、この場合、それは本当に優れています。
git version 1.9.4
。何もエコーしません:(
.git/config
ファイルは、追跡ブランチ情報も提供します
[remote "Hub"]
url = ssh://xxxx/tmp/Hub
fetch = +refs/heads/*:refs/remotes/Hub/*
[branch "develop"]
remote = Hub
merge = refs/heads/develop
[branch "Dev1"]
remote = Test
merge = refs/heads/Dev1
[remote "Test"]
url = ssh://xxxx/tmp/gittesting/Dev1GIT
fetch = +refs/heads/*:refs/remotes/Test/*
ローカルブランチのリストに作用するループ内の各ローカルブランチに対応するリモートブランチ(存在する場合)を見つける必要がありました。私は次のものを使用することになりました:
git for-each-ref --format='%(refname:short):%(upstream:short)' refs/heads | grep "^LocalBranchName:.*/" | sed "s/^LocalBranchName://"
これは、対応するリモートブランチを持たないローカルブランチ( "someremote / somebranch")に対しては何も出力しません(空の文字列)。