What is a git ninja exactly?
The git toolchain is so widely used, that most developers have to learn how to use it to some reasonable degree. I'm sure most people have run into a developer claiming that she was a true git ninja, but what does it really take?
Lets play with the thought of having a git ninja academy...
Level 1: academy scholar
The academy is where would-be ninja start; they are not actually considered ninja until they graduate. To get to level 1, you need this:
- A basic understanding of the difference between the concept "fork" and the command "clone".
- The concept of a git repository
Level 2: Genin
Genin are the lowest level of ninja, sent on low-risk jobs. They know how to modify code on a single branch that someone probably helped them set up. To get to level 2, you need to know the following commands:
- add
- commit
- push
- pull
- status
Level 3: Chuunin
Chuunin are ninja who are qualified to watch over and guide other ninja. At this level, the ninja knows how to work with different branches and handle merge conflicts. To get to this level, you need to know about feature branches (the concept) as well as the following commands:
- init
- checkout
- branch
- reset
- merge
- fetch
- diff
- log
- tag
- clean
- mv
- rm
Level 4: Jounin
Highly experienced ninja. It is as of yet unknown what one has to undergo to become one. At this level, you are able to carry out more advanced operations that typically involves more advanced configuration, cleanup of botched commits and various error handling.
- stash
- revert
- rebase
- cherry-pick
- blame
- show
- am
- submodule
- fsck
- apply
- archive
Level 5: Kage
The Kage stand equally with the rulers of their countries and are the leaders of ninja society. At this level, you are able to automate merge conflict resolution, find commits with bugs in them and even rewrite history. The commands are:
- bisect
- notes
- filter-branch
- rerere
- bundle
Finishing notes
My take is that most developers should quickly attain level 3. Otherwise they'll lack the skills needed to work with the other developers. Each team should have one level 4 ninja to weed out more complicated edge cases. Level 5 is only for teams with special needs.
The illustration is copyright Seth Werkheiser, see https://www.flickr.com/photos/sethw/.
⽕👌🏻 I like it.