Reputation: 2190
I want to find out the last thing that I pushed, not the last thing i commited, but pushed.
Is there a git command for this?
Context: I want to squash some commits before merging my dev_branch with a master branch but I have been told you can not rebase anything that is already pushed (is this true?).
So i would like to know what was the last commit that I cannot include in this rebase.
Upvotes: 22
Views: 44745
Reputation: 70263
The correct command to find the commit you could squash against is:
git rev-parse @{push}
That command will error out if your repository has no commits, or your repository has no remote to push to.
If the result is equal to git rev-parse HEAD
(which will also fail if your repository has no commits), then you have nothing to squash.
You can get a list of squashable (not-yet-pushed) commits via git log @{push}..HEAD
.
Upvotes: 4
Reputation: 169008
If you mean the last commit you pushed to the master
branch then, assuming your remote is origin
:
git rev-parse origin/master
This will show you the commit ID of the tip of the master
branch of the origin
origin, as your local repository is currently aware. This may mean that the commit is someone else's commit, if someone else pushed commits after you did and you have since fetch
ed that branch.
git show -p origin/master
This command will give you information about the commit, including the commit ID, author, log message, and diff to its parent commit(s).
One of my favorite Git commands for doing exactly this kind of inspection:
git log --pretty=oneline --abbrev-commit --graph --decorate --all
This will display a nice ASCII-art graph of the commit history, and each commit will show any refs that are targeting it. This way you can, at a single glance, see branches and merges in history and easily see where origin/master
is in relation to your own master
.
Upvotes: 43