Need to do this in a script. Thank you.
-
Possibly a duplicate of [this](http://stackoverflow.com/questions/1800783/compare-local-git-branch-with-remote-branch). – ajp15243 Mar 22 '13 at 01:56
-
[`git-wtf`](http://git-wt-commit.rubyforge.org/git-wtf) is a cool handy script which does this already. It is written in ruby. You could try to reverse-engineer it. – Tuxdude Mar 22 '13 at 02:02
4 Answers
I use the following command (as an alias) to list all local commits not pushed to the remote repository.
log --oneline --decorate=short --graph --all --branches --not --remotes
This will need to be modified for use in a script, and there are probably plumbing commands that do the same thing, but I find it useful.
The key is in the last few arguments:
--allincludes all refs inrefs/-- you may not want this if you are only wanting the commits for the current branch.--branchesincludes all refs inrefs/heads-- leave it off for current or specify a branch explicitly to limit the list of commits.--not --remotescontains the magic -- making sure none of the commits listed are inrefs/remotes.
Edit > It looks like the git rev-list ... plumbing command has similar arguments, but I have not tested it to know if it works the same. Plumbing commands are recommended for scripting, so have a look at it -- man-page for reference.
Hope this helps.
- 5,354
- 3
- 24
- 32
If the situation is like this :
/--a--b--c myBranch [local branch]
/
----x <- [closest common ancestor]
\
\--e--f origin/myBranch [tracked remote]
git statuswill display a messagemyBranch..origin/myBranch [ahead 3, behind 2]-ahead 3means your local branch is 3 commits ahead of the closest common ancestor,behind 2means the remote branch is 2 commits ahead of the closest common ancestorgit log origin/myBranch..myBranchwill display the log about commitsa-b-c- it will display the log for the commits ranging from the common ancestor of the two branches up tomyBranchgit log myBranch..origin/myBranchwill display the log about commitse-f- it will display the log for the commits ranging from the common ancestor of the two branches up toorigin/myBranch
You can add any option you like to these commands, e.g : git log --oneline --decorate origin/myBranch..myBranch
- 46,477
- 5
- 57
- 104
git status indicates how far the current branch is behind the tracked branch. You can run this in a script and parse the output. There might also be a plumbing command that gives you the information a little more directly.
- 81,660
- 23
- 145
- 268
You can pull the latest change information using the 'git fetch' command and then if you do a 'git status' on a tracked branch, it should show you the number of commits that's not pushed to the server or how far the current branch is behind.
Using fetch command wouldn't apply the changes in you local branch,for this, you have to merge it using 'git merge origin/branch_name'.
- 2,492
- 2
- 19
- 29