Learn Git Internals
source link: https://codecrafters.io/learn-git-internals
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
For many of us, how Git works under the hood is a mystery.
-
What is the
.git
directory used for? -
What are Git objects?
-
How does a Git client communicate with a Git server?
If one really wanted to understand this topic better, these are some of the resources they’d probably look at:
-
The Pro Git book by Scott Chacon & Ben Straub
-
Rebuilding Git in Ruby by Thoughtbot
-
Write yourself a Git by Thibault Polge
I’ve read all of these, and I know that they aren’t the easiest to follow. They’re often theory-heavy with no code examples, or 2000 word+ series that can get hard to keep up with.
Here’s the part where I offer you a better solution.
The CodeCrafters’ Build your own Git challenge is a hands-on challenge where you’ll learn Git internals by building a small Git implementation. The application you build will be capable of cloning a public repository, committing changes and pushing them back to a Git server.
You’ll proceed stage by stage, starting with simple stages like “Initialize a repository” and eventually building up to a minimal-featured Git implementation that can interact with a public repository. Along the way, you’ll learn about the .git
directory , a few of Git’s “plumbing” commands , Git objects (blobs, commits, trees etc.), Git’s transfer protocols and more.
You’re free to use any programming language of your choice, and work from the comfort of your own editor. Submit code via a git push once ready, and we’ll stream test results directly to your terminal.
You’ll also get to chat & compete with like-minded folks in the process. (We run 1-week long sessions, attempt at your own pace)
Sounds like your jam? Checkout ourearly access program!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK