Tower

Tower is the most powerful Git client for Mac (and Windows). It’s indispensible for using Git without the command line, which I do almost every day.

Customize the UI

App header

View > Show Window Title

View > Customize Toolbar as follows:

  • Previous
  • Next
  • space
  • Fetch
  • Pull
  • Push
  • space
  • Apply Stash
  • Save Stash
  • space
  • Merge
  • Rebase
  • Git-Flow
  • space
  • Finder
  • Terminal
  • space
  • Search
  • flexible space
  • Refresh
  • Quick Actions
  • Open
Show Icon and text

Working copy

Sort by “filenname”.

Branches: commit list

  • Show graph: unchecked
  • Group by: day
  • Commit size: medium

Preferences

General

Terminal application iTerm2

Git config

Global user name Brendan Falkowski
Global email brendan@gravitydept.com
Diff tool Kaleidoscope
Merge tool Kaleidoscope

Configure command line environment

Git repositories may be configured with pre-commit or pre-push hooks. If hooks call command line utilities, then Tower’s shell needs to know where those binaries are located.

Create this file: ~/Library/Application Support/com.fournova.Tower3/environment.plist

Sample environment file

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>PATH</key>
        <string>/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin</string>
    </dict>
</plist>

My custom environment file

This isn’t required anymore. Yarn fixed its issue with `brew` installation, so Homebrew-installed Yarn is found in the normal `/usr/local/bin` path.

I added yarn binaries to Tower’s shell PATH variable because Magento PWA Studio runs Yarn in a pre-push hook.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>PATH</key>
        <string>/Users/brendan/.yarn/bin:/Users/brendan/.config/yarn/global/node_modules/.bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin</string>
    </dict>
</plist>

You can’t use $HOME in a path. Only use absolute paths. Equivalent for me: /Users/brendan.

Reference