Git rocks! Git is a distributed version control system, ideal for collaborative software development.

This post is about learning what Git is, before you decide to commit -m ‘to Git.’

Why I use Git:

Before Git, I was using DropBox to share my code with managers in a different city. Zipping up my files and sharing a folder was tedious though, and I wanted a faster option to share the latest updates of my code. GitHub was the best solution for me, but learning Git was something I had put off due to the perceived complexity of Bash and Git Bash (in actuality, Git really isn’t so hard to get started with). GitHub has excellent Help documentation, there’s a free Git Community book, and Scott Chacon released Pro Git for free, (buy the book if you like it, and have the means to do so).

For the past two months I’ve been actively using GitHub, but I wish I had started sooner.

Learn All The Things!


Who This Post is For:

I’m writing this post specifically with the spouses and partners of developers I know, in mind, so that they can learn what Git is. I’m also writing for my classmates, because GitHub rocks and I want to share the cool stuff I learn with them, especially if information about a technology can help them.

(Point is: learning is fun, feeling dumb isn’t. Don’t let that stop you though, “never be afraid to learn.”)

Background on Git:

Git is free, open source, source code management. It was initially designed and developed by Linus Torvalds for Linux kernel development, as a replacement for BitKeeper. For more information, check out Torvalds Talk at Google on Git.

What is Distributed Revision Control?

Bryan O’Sullivan describes revision control simply, in his book Mercurial: The Definitive Guide, as “Revision control is the process of managing multiple versions of a piece of information.”

A distributed Revision Control System (or a Version Control System) keeps track of the changes made and allows for collaboration on projects. A Distributed Version Control System (VCS), means that any repository is as good, or important, as any other. Centralized VCS have only one ‘blessed’ source, and that repository is what is checked out and then the changes are committed back into it. Git is a distributed VCS, so each developer can have a local copy of the repository and also have the entire development history of the project. With Git, you can commit changes along with a team of other developers, then the project owner can do a pull request and choose which changes to implement into the code. This way, the best bug fixes and updates are used.

What is GitHub?

GitHub is a web-based hosting service for projects that use the Git revision control system. GitHub offers free and commercial plans -and even a special plan for students! (GitHub approved my request for a free 2 year micro plan, as a place to store my projects/research for school at.)

Why should I use Git? 

Use Git if you want to track your project’s changes made with revision control. If you want to share your code with other programmers and be able to ask for input. If you want to contribute to the open source community. These are all great reasons to use Git!

Is learning Git right for me?

Yes, learn it! If you like a different source control tool better, learn that! (There are other options, such as MercurialBazaar, and Subversion.)

What is Git for Windows, Git Bash/Git GUI, and Bash? 

Git for Windows is the software package that installs a minimal environment to run Git on Windows. It comes with a Bash (a Unix-type shell), with a Perl interpreter and with the Git executable and its dependencies.” – says msysgit, in their GitHub ReadMe.

With Git for Windows, you can install a Bash command prompt tool (called Git Bash) and a graphical user interface tool (called Git GUI). Learn more at

-Bash is a scripting language, which you will use in GitBash (such as: $ echo ‘Hello World!’).

How do I use Git?

GitHub’s help documentation is so good that I think it’s best that you check those out for yourself .

Step 1) Register a free account at GitHub.

Step 2) Install Git for Windows, if you use Windows. GitHub has an awesome tutorial on how to do it! (If you’re using OS X, use this tutorialIf you’re a Linux user, check out this tutorial.)

Step 3) Start exploring the beginner tutorials!

Here are some resources to learn more about Git and GitHub:

Happy exploring!


Does your skin crawl at the thought of asking a wrong question in front of your peers? How do you get over the intimidation of people assessing you by your questions, and can you be ok with that?

When stuck with problems in NHibernate (like how to avoid orphans with deletes and through user prompts, and how to refine eager loading and pagination…so NHProf will stop yelling) I’ve thought about tweeting the problems to see if anyone could help. Although, the stark realization that people will judge my questions has prevented me from doing so. My twitter has become a way for me to keep in touch with friends in the tech industry, instead of an awesome method to ask questions, share articles, and link a great blog to. All this hassle to avoid being seen as an intellectual failure.

"Your question is bad and you should feel bad"

Is asking a ‘dumb’ question so bad, though? Asking a simple question or answering incorrectly is the fastest way for me to feel modest. Those results aren’t necessarily a bad thing. Being new to something and eager to learn is not bad. I’ll proclaim being a noob, but never to being stupid.

Perhaps most everyone feels this way, worried about trying and failing, or speaking and being seen as ignorant. What’s helped me in college has been reading ahead in my textbooks and accepting that it’s ok to be wrong (and to say wrong things). Teachers would much rather have an engaged class than any alternative. A class that is inquisitive, humble, and friendly makes an incredible learning environment. (Although, I still hope that my classmates will better recall the times that I’ve helped them debug and catch up, rather than answering a question incorrectly.) I certainly think the best of them for asking questions, overcoming struggles to learn, and really showing effort. A quote by Mark Twain puts it best:

Keep away from those why try to belittle your ambitions. Small people always do that, but the really great make you believe that you, too, can become great.

– Mark Twain

Here’s 5 things you can do to help mitigate the feelings of tech-noob-itude.

  • Stop undervaluing your knowledge. Really acknowledge the idea that you cannot know everything. No one knows everything, and most certainly no one else knows how to be you. (Scott Hanselman made this point in a talk on ’32 way to make your blog suck less’.)
  • Eliminate the stigma of being “that person at a usergroup ” who asks dumb questions. It is impossible to know everything, and at one time the people sitting in your conference, user group, or class didn’t know anything about this subject either. If this is a simple question, it’s ok to write it down and google it later (or at that very moment). Also, keep in mind that other people might have the same questions as you, and are just too nervous to ask. (Due to the rigidity of some presentations and groups, people asking if the slides are online might just be avoiding the fear of being seen as an intellectual failure. Attendees probably ask themselves, “Why ask a question now, and risk looking dumb, when I can look at the slides later?”) 
  • Follow blogs and research the presentation’s topic beforehand.  Having some prior knowledge, no matter how small, may give you a slight boost of confidence. When I hear friends mention a technology that I don’t know about, I try to make it a point to google it. Researching a presenter’s topic is akin to reading ahead in school. You’ll remember the chapter easier and potentially be able to ask more meaningful questions.
  • Find kind people who love to learn. If asking a question in public is too stressful for you, talk to your friends, peers, coworkers, teachers, or fellow user-group attendees about it. Email the speaker a question if they’ve indicated a willingness to help. (Most presenters have their contact info in slides, or it is easily found online by a quick search.) The people who have taught me the most remember learning on their own, before user groups became more commonplace, and while the internet was in it’s infancy. Now they help others online, through chat clients, internet forums and even in person at tech events.
To my knowledge, no usergroup has brought out a dunce cap yet, so keep asking questions.