git ahead/behind info between master and branch?
I have created a branch for testing in my local repo ( test-branch
) which I pushed to Github
.
If I go to my Github
account and select this test-branch
it shows the info:
This branch is 1 commit ahead and 2 commits behind master
My questions are:
Github
to see it)? I know I can see the diffs between branches using:
git diff master..test-branch
or using Meld
(which I prefer):
git difftool master..test-branch
but I was wondering if there's a way to see the ahead and behind commits separately. IE: is there a way to show that 1 commit ahead by itself and then those 2 commits behind by themselves?
Here's a trick I found to compare two branches (any two) locally and show how much commits each branch is ahead of the other (a more general answer on your question 1):
git rev-list --left-right --count master...test-branch
which gives you output like
1 7
which means as much as: compared to master, test-branch is 7 commits ahead and 1 commit behind
You can also compare branches like origin/master...master
to find out how many commits a branch is ahead/behind of its remote branch
First of all to see how many revisions you are behind locally, you should do a git fetch
to make sure you have the latest info from your remote.
The default output of git status
tells you how many revisions you are ahead or behind, but usually I find this too verbose:
$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 2 and 1 different commit each, respectively.
#
nothing to commit (working directory clean)
I prefer git status -sb
:
$ git status -sb
## master...origin/master [ahead 2, behind 1]
In fact I alias this to simply git s
, and this is the main command I use for checking status.
To see the diff in the "ahead revisions" of master
, I can exclude the "behind revisions" from origin/master
:
git diff master..origin/master^
To see the diff in the "behind revisions" of origin/master
, I can exclude the "ahead revisions" from master
:
git diff origin/master..master^^
If there are 5 revisions ahead or behind it might be easier to write like this:
git diff master..origin/master~5
git diff origin/master..master~5
UPDATE
To see the ahead/behind revisions, the branch must be configured to track another branch. For me this is the default behavior when I clone a remote repository, and after I push a branch with git push -u remotename branchname
. My version is 1.8.4.3, but it's been working like this as long as I remember.
As of version 1.8, you can set the tracking branch like this:
git branch --track test-branch
As of version 1.7, the syntax was different:
git branch --set-upstream test-branch
With Git 2.5+, you now have another option to see ahead/behind for all branches which are configured to push to a branch.
git for-each-ref --format="%(push:track)" refs/heads
See more at "Viewing Unpushed Git Commits"
链接地址: http://www.djcxy.com/p/19496.html上一篇: 如何在git中提交后自动推送?
下一篇: 主人和分支之间的信息前/后信息?