Hello Sebastien, Thanks for coming by again.
I am chuffed to hear that you liked my analogy.
I couldn't stop laughing when you joked about not try jumping out of the train. lol
I totally agree with you about your enhancing GIT description. Thank you for your valuable opinion as always. You made my blog more worthy. haha Kudos to you, too!
Great job with the train analogy 🙌
They always say story-telling is a great way to convey a message, I guess here the analogy+story telling is the magic that makes this so easy to read 👏
One key difference between real train and git branches too is that Git let you jump off your current branch to go to another one, with no time and no risk (don’t try that with real trains! 😅)
When I think back to the days where we moved from SVN to Git, I think the most difficult but liberating key idea was to realize that Git is decentralized by design. What that means is that anything you do is local first. Even when you experiment with things, you cannot screw up the remote origin (until you explicitly ask to push). So there’s no reason to fear with experiment.
Another key idea which was liberating was that branches and tag are super lightweight, there are only references (back in SVN, a branch was a complete copy of the file, so it came with size and latency costs). The consequence is that we should embrace branches and tag: creating a tag to experiment with a feature, some refactoring, or anything, let you easily rollback to your original state.
What I mean is that once we get that Git let you do things locally without breaking the shared remote origin, and makes it easy to have parallel versions to easily create experiments, it becomes liberating, and Git becomes more than a version control tool, it becomes a workflow assistant.
I don’t know if what I write makes sense, but it really changed and empowered the workflows that are possible compared to what we had a few years ago.