Leveling Up Your git Workflow

Code4Lib 2015

Megan Kudzia

Kate Sears

Albion College Library

We git, and so can you

  • How and why we started
  • Biggest mistakes
  • Things we did right
  • Things we did wrong
  • Cleanup
  • Other thoughts

Why and how we started using git

  • We wanted:
    • A better code approval process
    • Access to our code from anywhere
    • To learn new things on an 'easy' project
  • Megan started a repo in late spring
  • Added Kate when she got back in the fall

Defining the scope

  • Website redesign
  • Wordpress child theme
  • Incorporated LESS CSS
  • Start a fresh project with git!

What went wrong

Conceptually

  • We looked for an easy way through
  • Workflow/terminology confusion

Specifically

  • Creating a branch and not checking it out
  • Not waiting for the GUI to refresh properly after changes
  • Sourcetree? GitK? Command line? What?

Things Kate did right/wrong

Right

  • Made lots of commits, useful messages
  • Shared work space and hours, so it was easy to address problems quickly
  • Made heavy use of white boards and diagramming

Wrong

  • Used distracting git GUI
  • Our reaction to mistakes was to try again

Things Megan did right/wrong

Right

  • Decided the best way to learn was to jump in
  • Found a more-advanced buddy

Wrong

  • Used distracting git GUI
  • See Kate re:reaction to mistakes
  • Made commits & decisions while tired, cranky
  • Clung to the idea that git is easy

Brainstorming: yikes

Our initial workflow

Or, more yikes

Cleanup

  • Learn new way to approach git
    • @jessitron git happens talk
    • think like a git
  • Reconsider and re-do workflow

Lightbulb #1

We changed our thinking about git progression/directionality

Lightbulb #2

We learned about the graph/node thing.


This digressed into a huge "arrrgh MATH" conversation, but fear not!

Continuing cleanup

Explain your process with and without git-speak

  • Move (checkout) master to beginning of filter-branch 
  • Use git filter-branch to remove extra files
    • Not all files that are here need to be here
  • Push (results in merge commit that doesn't point at anything yet)
  • Garbage collect
  • Push again
  • Rebase for conciseness and clarity of tree

The Cleanup Process

What we're doing now:

Other Thoughts

  • Git is hierarchy-less; use workflow 
  • Be willing to iterate
  • Approach rebase with caution, not dread
  • You probably have to make mistakes to learn git
    • Work in a team
    • Use the command line
    • Confusion is normal!
  • Don't git when tired/cranky

Thanks!

Questions?

  • @mkudzia, kudzia.megan@gmail.com
  • @KSears16

Leveling Up Your Git Workflow

By Megan Kudzia

Leveling Up Your Git Workflow

Moving from a one-person git workflow to a multi-person workflow with a hierarchical structure.

  • 2,141