开发者

What is this branch tracking (if anything) in git?

开发者 https://www.devze.com 2023-01-14 01:22 出处:网络
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 fi

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?)

0

精彩评论

暂无评论...
验证码 换一张
取 消