up git stream

Unlike most people (I imagine) I rarely, if ever, run git pull when refreshing my local Git repositories.

Instead, over the years I have grown accustomed to running git fetch and git merge separately (a pull does both of these in one command).

The reason for this is so that I can review the log and any changes before merging the remote code into my local repo.

I would try to remember to run git log after fetching the remote code, which by default would show the entire log history of the repo. Then I read about the dotted range notation and @ construct for specifying revisions in Git.

Using @ on is own is equal to HEAD. Combine it in git log with {upstream} or {u} to only show commit logs for the upstream branch

git log @{u}

The two-dot notation is shorthand for all commits in a range. Therefore to show only the commits from the remote upstream that have yet to be merged in my local branch I would incant

git log HEAD..@{u}

This can be made even easier by omitting HEAD, as leaving one end of the range blank defaults to HEAD

git log ..@{u}

With this newfound knowledge I updated my gf alias to run both commands, automatically showing me the commits I have fetched and need to review

alias gf="git fetch && git log ..@{u}"