Photo by Alex Read

Learning Git and Github - Now Hating That I Love It

By: Timothy Hoang

September 18, 2017

Tags: Git, Github, Version Control With Git, Github and Collaboration, Richard Kalehoff, Udacity

Why I didn't learn this skill initially

I never placed much importance in learning Git and Github when I initially started learning web development. It was hammered that learning core programming with HTML, CSS, and JavaScript is more important. You need to practice your chops, learn fundamentals concepts, and build projects. That last part was when I realized that it became absolutely imperative to finally learn about this unforgiving black screen.

I was just like everyone else by starting out on Codecademy and fooling around with all the different tutorials. "Learn HTML & CSS", "Learn JavaScript", "Make A Website", "Learn Git", and the list of short courses go on. Then, I experienced it again when I was doing The Web Developer Bootcamp with Colt Steele. Don't get me wrong by saying that this is a really great course to learn web development; but, it still didn't give me that kind of depth I needed. Most of these tutorials on these different courses throw Git/Github into the mix but they never actually taught you actually how to use it in a real project with a team. I understand it is necessary because they need to focus on their main course topic. Sporadically, I ran across Git/Github through my web development journey but still did not take a serious attitude with it.

Codecademy
First time I saw Git.

All that changed when I started working with a remote team with Chingu-Voyage Free Code Camp group. With my initial team, the intermediate-level project to clone the popular Chrome Extension "Momentum Dash" never actually took off due to some family issues within the team and I didn't have the knowledge to lead a team for such a project. I eventually found my way into another team called Turtles-Team-2. Don't mind the name as Turtles are basically all the intermediate level students of free code camp. I was thrown into a project that was already about 80% completed. I didn't have a clue about how to contribute to the project besides adding, committing, pushing. What I thought I knew from all my brief brushes with Git/Github didn't help with the introduction of different branches, merging the team's work into my own branch, resolving merge conflicts, and with merge pull request among other things. Then the search began to finally take care of this gap in my knowledge.

Chingu-Voyage Turtle Team 2
Joining a real team!

Where I went to learn for free

Luckily at that time, I also needed to revamp my portfolio website and knew I would need some version control. I thought about reviewing the previous courses on the topic but I figured that wouldn't help too much. Then, there's reading books about Git and Github but this might not help with all the moving parts when working on a real project. They might teach the concepts really well but I think the best way to learn is to actually see pragmatic examples, working through the software, and having a good course. I started looking for in-depth courses online but some of them were paid. I'm a big believer in learning web development mostly for free/cheap since there are tons-o-resources online to learn anything. My search continued...until I came across Udacity. It turns out that they actually had 3 courses and 2 of them turned out really fantastic! All 3 were free of course!

I started with How to Use Git and Github with Sarah Spikes and Caroline Buckey. It was a good starter and I learned some useful commands, setting up my terminal, and deep theory. I thought this would be the course that finally did it but I was wrong. We all learn differently and this course did not suit my learning style. Although many parts of the course were useful, I did not particularly enjoy the concept maps, interview clips, and examples that gave me errors when I went through them. Most of all, I didn't feel like I picked up the chops I needed to work with Turtles-Team-2.

Then, I wanted to give Udacity another chance. A newer course with Richard Kalehoff entitled "Version Control with Git" finally did it for me. The course was practical, examples flowed well, and there wasn't as much theory. The bulk of the course requires you to run through exercises and work through your own Github account. The course also works well for absolute beginners but takes a steady pace to build your understanding. The course most importantly showed me the kind of workflow that I would experience on the team. I learned all the basic commands I would need to know to navigate through most issues. The course explains creating a Git repository, reviewing a Git repository's history, adding commits, branching & merging, and other topics.

Version Control with Git Introduction
Richard Kalehoff introduction.

The great thing was that the course didn't end there. Following the same teaching style, Richard Kalehoff did it again with the follow up to Version Control with Git about how to collaborate on Github. Aptly named, "Github and Collaboration" led me further down the rabbit hole and gave me more necessary tools and knowledge. The course helps explain the commands fetch versus pull, pushing to a repository's many different branches, and contributing to open-source.

Version Control with Git Contents
Table of contents in the first course.
Github and Collaboration Contents
Table of contents in the second course.

With all this knowledge, my team's chrome extension clone gave me a real-life working example to test out my new-found powers. It was a bit daunting as I was afraid I would fudge something and destroy their project! However, I trusted in the knowledge I gained and reminded myself that there are multiple copies of the repository on my computer, my teammate's computers, and on Github. If I screw something up, there are multiple backup copies. Pretty soon I was making way in making commits, pushing my changes to the project, and feeling much more comfortable with this black screen of death. I was so comfortable that I eventually implemented the terminal into my code editor (VS Code) and using it every day now!

Conclusion

What's the takeaway from this article? I recommend that you take these two free courses with Richard Kalehoff: Version Control with Git and Github and Collaboration. It has prepared me to use Git and Github more than all the other brief appearances of the topic in other web development courses. The course is current, the examples work well, and the style of teaching was straight to the point without too much fluff in my opinion. The course will teach you to make changes to repositories and how to reverse changes when crap hits the fan.

Then I would recommend you make use of the commands every day when you are coding. You are coding every day, aren't you? This will help reinforce what you learned and you'll feel like a full stack developer. No guarantees on that last part. Use it on your own projects like your portfolio, taking notes with markdown, or the best solution is to use it as part of a team project. One of the ways to use the terminal every day is to implement it into your IDE (Integrated Development Environment) like Visual Studio Code or Sublime Text. When you have a million windows going and with the terminal within reach by only a couple keystrokes, you're giving your mind a break by not having to constantly alt-tab between all the windows.

Terminal in IDE
My terminal in VS Code.

Version Control programs like Git (there are others) has helped me trained me to think of my projects in commits. This has helped me from getting too overwhelmed by big projects. It also allows me to keep multiple versions of my projects without having to worry about losing a feature/look that I like to my project. Everything is saved in the log. It's even better for when I screw up a feature and want to find out the exact commit that the code caused something to crash. Did you know that other software use version control as well like google documents? The exception is the level is not as advanced.

So save yourself some headache and learn it once and for all with these 2 courses. You don't have a to pay a penny for them and they are produced with great quality. I'll continuing my education with version control with other courses on this topic in the future but so far I'm very satisfied. For now, I continue to write my notes, working on multiple projects and saving my websites using Git and Github. I hope you have enjoyed this public service announcement. Remember set up your terminal in your IDE and git at it!

If you enjoyed my thoughts, you’re welcome to follow my:

About

My personal website to share my journey in travel and web development. I love meeting new people, learning about tech advances of the future, and sharing outdoor adventures.

Social