Phew. I just finished working on my first “real” ruby project with one of my classmates. It was a small project so we were working on the same files. Naturally this resulted in a lot of merge conflicts and constant communication when we pushed or pulled any changes. Prior to this project, I came across two applications (Tower and Kaleidoscope) that were recommended for productivity when using git. I decided to try them out while working on our project.

Tower

I prefer to stick to the command line, but as a beginner, I have difficulty recalling certain commands and flags. Also, I haven’t really explored git and utilized most of its features. In comes Tower.

Tower

This is my commit history for the SmashCLI project I’ve been working on with Dan. Git tells me in the command line which files have been changed and allows me to sift through them. Rather than having to restore my folder to a specific commit to see what has changed, then revert back (or if there’s a better way to do things I don’t know it), Tower shows me all the changes at that point in time. This makes looking back at old code in case I deleted something useful so much easier. Being able to look back on my stashes at any point in time is also incredibly useful.

Tower file difference

Stashes

Kaleidoscope

Kaleidoscope is a file comparison tool. I’m starting to like it a lot. Although it’s a standalone application, it integrates with Tower and my experience with it only as a diff tool for merge conflicts. If I look at my repo’s commit history, Tower provides me with a “DIFF” button to see what the differences are in my files.

Kaleidoscope

This application is pretty simple, but when combined with Tower, it becomes a very useful tool to compare changes between a commit and current code. I can see myself using Tower and Kaleidoscope in the future on more complicated projects to sort out merge conflicts and grab out any code in time. Even though all of this can be done in the command line, these tools make the process more visceral and much easier to visualize.