What is this branch tracking (if anything) in git?
After creating a branch with --track (or leaving the default, or --notrack), you later wish to be reminded of what a branch is tracking. Is there a way, other than searching through the .git/config file, to display what a branch is t开发者_运维技巧racking?
Use: git branch -vv
to see which branches are tracked and which are not.
Note that with git1.8.3 (April 22d, 2013), you have a new way to emphasize the upstream branch:
"
git branch -vv
" learned to paint the name of the branch it integrates with in a different color (color.branch.upstream
, which defaults to blue).
C:\prog\git\git>git branch -vv
* master 118f60e [origin/master] Sync with maint
^^^^^^^^^^^^^
|
--- now in blue
If you want to know for a given branch, you could do:
git config --get branch.<branch>.remote
If it prints a remote, it's tracking something. If it prints nothing and returns failure, it's not.
If you need to access this information in an automated fashion you will want to avoid trying to parse the output of branch -vv
(slebetman’s answer).
Git provides a set of lower-level commands with stable interfaces and output formats. These commands (called “plumbing”) are the preferred interface for ‘scripting’ purposes. The git for-each-ref command can provide the required information via the upstream
token (available in Git 1.6.3 and later):
% git for-each-ref --shell --format='
b=%(refname:short) u=%(upstream:short)
# Make a fancy report or do something scripty with the values.
if test -n "$u"; then
printf "%s merges from %s\n" "$b" "$u"
else
printf "%s does not merge from anything\n" "$b"
fi
' refs/heads/ | sh
master merges from origin/master
other does not merge from anything
pu merges from origin/pu
Thanks for the hint Jefromi
With the following command you can get the remote tracking branch for a specific branch.
git config --get branch.<branch>.merge
To change the remote tracking branch you can simply change this config value.
Note: this is an alternative way to git branch -vv
(already answered here)
and git branch -u
(Make an existing Git branch track a remote branch?)
精彩评论