I’m one of many developers who really enjoy using the Git version control system. A Git Groupie, if you will. It’s one of those software projects that just feels right practically from the very first commit. If you’re also a “committed” Git user (get it?), you’re probably always looking for ways to more effectively manage your repositories. If so, check out the 10 Git utilities introduced in this article.
1. Use Git on Windows with TortoiseGit
The tortoise has somehow become synonymous with running open source version control projects on Windows, thanks to a long line of namesake projects traced back to the 2000 release of TortoiseCVS (a Windows-based CVS client). Over the years several sibling projects were created for interfacing with other popular version control solutions, including TortoiseSVN and TortoiseHg. In late 2008 TortoiseGit became the latest addition to the series, providing Windows users with an impressively well-integrated Git client.
TortoiseGit depends upon Git for Windows, so be sure to install it before installing TortoiseGit. See the TortoiseGit website for all of the installation and configuration details.
2. Browsing Repositories with gitk
If you’d like to view repository changes using a convenient graphical interface, check out gitk. Gitk is a repository browser that makes it easy to review and search a project’s commit history. Figure 1 presents a screenshot of the gitk file-browsing window opened to one of my forthcoming books.
3. Managing Repositories on OS X
If you’re running OS X and are looking for a more refined interface, check out GitX. GitX aims to be a capable GUI-based Git client for the OS X platform, offering many of the most commonly used Git features, including the ability to browse repositories and commit changes. Additionally, you’ll find a few slick features such as the ability to upload patches to gist.github.com using the “Gist it” button (see Figure 2).
4. Hosting Repositories with Gitolite
The majority of Git users assume the role of client, interacting with one or more specific projects which happen to be managed in Git repositories. However, somebody must assume the role of administrator, managing the repositories, repository access, and repository users. The Gitolite project was created with this administrator in mind, providing a solution for allowing a single user account to host multiple Git repositories without having to deal with the complexities of creating server accounts or even granting server shell access. Administrators can use Gitolite to easily grant access rights using a simple configuration file syntax, synchronize Gitweb permissions with those defined in Gitolite, log all project interactions, and much more.
5. Manage Git Hooks with Git-hooks
Git offers a “hooking” feature that causes certain commands or scripts to be run in conjunction with certain commands, such as when you commit changes to a repository. Believe it or not, every Git repository includes several sample hooks, which you’ll find in
.git/hooks. So if you’re not familiar with this feature be sure to check out this directory and peruse the examples.
Benjamin Meyer’s git-hooks project provides developers with an easy way to manage Git hooks within three convenient locations, including inside Git repositories, within your home directory, and globally. Meyer reasons this capability can be very useful in situations where a team member would like to execute personalized hooks such as not allowing the team member to push changes to a remote repository during late night hours. Likewise, the global hook integration allows organizations to institute global hooks such as running a spell checker when entering a commit message.
6. Git Project Management Using Tower
Although a relative newcomer and in fact still in beta, Tower is shaping up to be a truly impressive Git client for OS X users. Sporting a slick interface (see the website for several screenshots) and a ton of useful features, Tower is certainly a project to watch in the coming months.
7. Review Projects Via the Web with Gitweb
Just as millions of PHP and MySQL developers use phpMyAdmin to manage MySQL databases, so can you use Gitweb to browse your Git repositories using a convenient Web-based interface. Among all of the usual project-browsing features, such as viewing branch-specific logs and the changes made in conjunction with a specific commit, you can even configure Gitweb to generate project-specific RSS feeds.
See the Gitweb homepage for more information about this useful project.
8. Use Git and Visual Studio with Git Extensions
Although I haven’t developed .NET applications for several years now, Visual Studio remains far and away my favorite IDE, offering a stunning array of features, which are sorely missing in many other programming environments.
If you’re a Visual Studio user and would like to manage your .NET projects in Git, you’re in luck. Git Extensions is a Visual Studio plugin (compatible with VS 2008 and 2010) that allows you to carry out all of the usual Git commands from a convenient user interface. In addition to checking out the previously linked-to GitHub link, also see additional information about this project on its Google Code page.
Within the Eclipse Marketplace you’ll also find the Eclipse Git plugin EGit. Although still classified as an incubator project, EGit has quickly climbed the charts to become the fifth most downloaded plugin during the past 30 days (at the time of writing).
Lars Vogel has put together a comprehensive tutorial explaining how to install and use EGit, including information about integrating EGit with GitHub.
10. Coloring Commits with Flashbake
I use Git to track not only my software projects, but also all of my writing projects, including this very article. In fact, it can be such a valuable tool for writers that I devoted a recent article titled 10 Ways Git Version Control Can Streamline Your Writing Projects to the topic.
If you’d like to experiment with managing your own writing projects in Git, check out flashbake, a tool originally created by Thomas Gideon for science fiction author Cory Doctorow. Flashbake streamlines the commit process by automating the generation of commit messages each time your changes are committed to the Git repository. But rather than merely commit a placeholder message, flashbake can be configured to include commit messages that include data related to the commit timestamp, such as the weather details, recent Twitter posts, iTunes songs you recently listened to, and your current time zone.
What useful utilities have I missed? Tell us about them in the comments!
About the Author
Jason Gilmore — Contributing Editor, PHP — is the founder of EasyPHPWebsites.com, and author of the popular book, “Easy PHP Websites with the Zend Framework”. Jason is a cofounder and speaker chair of CodeMash, a nonprofit organization tasked with hosting an annual namesake developer’s conference, and was a member of the 2008 MySQL Conference speaker selection board.