Reflog

A new major version of Tower has recently been released. This feature is included in this new version of Tower. If you haven't updated yet, have a look at the new features.

With the Reflog, Git keeps a journal of many important actions. A new log entry is created every time your HEAD branch pointer is moved: e.g. when checking out a branch, merging changes, performing a cherry-pick or a reset. This can come in very handy for reconstructing past actions and recovering "lost commits". This makes it a great "security net" for your Git repository.

Since it is quite an advanced tool, Tower does not show it by default - but allows you to enable it in Tower's preferences.

You can access it either via the Reflog item in the sidebar (after it was enabled in the preferences), or simply by pressing CTRL + 5.

A Basic Understanding of the Reflog

The Reflog records every reference change of your HEAD. This makes it a kind of journal of your actions inside the repository, recording every action in sequential order.

Reflog entries expire and are deleted by the Git garbage collection. With default Git settings, an entry can expire after 30 days.

Working with the Reflog

By default, Tower displays all available Reflog entries for the HEAD pointer. Alternatively, if you're searching for an action that happened while on a specific branch, you can switch the context to only display actions on that branch (simply select the branch by clicking the "HEAD" label above the item listing).

Restoring a Commit / Branch

In case you want to restore an old commit that you found in the Reflog, simply right-click that item and select Create New Branch from <hash>.

Restoring Changes from a Commit

If you don't want to (re-)create a whole branch, you can also cherry-pick an individual commit: simply drag and drop it onto your HEAD branch in the sidebar.