chrispepper1989
chrispepper1989

Reputation: 2190

Git find out the last commit i pushed

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

Answers (2)

DevSolar
DevSolar

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

cdhowie
cdhowie

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 fetched 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

Related Questions