Some guys I know are really “thingy” about not using a GUI for anything when showing Git to their team. I get that… and it’s a good idea to not start there… for a while. Our course is two days, and for 80% of the first day it’s all commandline and index cards. By that stage you are grokking the DAG deeply, and at that point, it’s time to get productive by introducing a GUI.
At the end of Day One, we do a “Follow the Leader” exercise using SourceTree to perform everything they’ve learned so far in the day from the commandline. Then we unleash them on a tricky review exercise on their lonesome. Doing all that stuff visually in a GUI is a huge visual consolidation of the day’s learning - and a powerful demonstration of how much faster working with a Git Gui can be (but only when you know what you’re doing).
Don’t fear the GUI. If you’re not using one professionally, it’s worth revisiting to see what modern tools can do. There is nothing in my regular Git workflow that Sourcetree can’t do - and that includes interactive rebasing, amended commits, rebased pulls, annoted tags, stashing, multiple upstreams, branching, merging and resolving conflicts. All that stuff is there, and it’s all super productive. If someone told you GUIs were for noobs, the world has changed, and you’re missing out.
We spent plenty of time on Day 2 talking through workflow models with Git. This is something we hadn’t done enough of in our early courses, and this time we set it right. We talk about how the students currently do their release flow (in whatever revision control they use), and we talk about their aspirations and pain points for release management.
We also talk about the reality of release constraints in enterprise shops (Canberra, as Australia’s capital, is a big Government town!)
We then break out the index cards and work through:
- Centralised Master
- GitHub Flow (feature branch model)
- Git Flow
- Git model
If you’re looking for a good overview, there’s tons of great stuff on the Atlassian site as well as an amazing interactive demo of GitHub flow on the GitHub site. Go check it out!
But the key takeaway here is: team context is king! Spending time with the students talking about their real release process right now was super valuable in giving them handles to applying this stuff “back home”. Git is so flexible, people really appreciate the help landing it in their current processes (and discussing how they can use Git to improve their existing release train).