Where do I start? Part 0: Bash Terminal, Git and Github/ version control
Tags: beginners, webdev, git, bash
Published: 2019-02-25 02:21:57

---
title: Where do I start? Part 0: Bash Terminal, Git and Github/ version control
published: true
description: A short blog with some list of links and guides for folks starting out.
tags: beginners, webdev, git, bash
---
# Where do I start? Part 0: The Terminal and Version Control
## So where's Part 2?   
I did mention in [Part 1](https://dev.to/kevindsteeleii/where-do-i-start-part1-ides-html-css--css-frameworkslibraries-3acb) that I would follow up with a prequel of sorts focused on things you should probably have at least a passing grasp of. In this installment, I will be covering resources for the terminal and version control. So without further ado, here we go.

### So what's a terminal?
The terminal is an application that directly interacts with the computer via typed commands as opposed to point-and-click GUI operations. The name terminal originates from the olden days of computing. Terminals were once a physical machine used to interface with computers the size of large rooms which you did by typing in commands literally and the idea kind of took root since then. By entering commands manually and strategically you can reduce the amount of time it takes to do fairly involved operations in the GUI with ease from the terminal. You may also hear terms like the command line, shell, bash, or console. However, in most cases, it's probably the terminal that's being discussed. If you want to get pedantic, look at **[this](https://askubuntu.com/questions/506510/what-is-the-difference-between-terminal-console-shell-and-command-line)**.	
 
**NOTE**: This is my personal opinion but I **strongly** prefer git if I'm using a windows machine (I use Chromebooks, Windows machines, and a mac so...). While PowerShell is decent, the command prompt is pretty bad by comparison which is why unless you use .Net or something, it's generally not encouraged. But that does not mean you cannot be a unicorn and go ahead and buck the trend but you'll have to learn something _Linux-y_ eventually.

The following are my recommendations for what terminal interface to use with which operating system and some links to educational resources.
- **Download Links**
	- Windows (if you are using windows 10 look at the Linux subsystems links)
		- [Powershell (windows better than command prompt)]()
		- [Git for windows](https://gitforwindows.org/)
		- **[Windows Subsytems for Linux Docs](https://docs.microsoft.com/en-us/windows/wsl/about)**
	- Mac (the terminal it comes with is fine but if you're fancy..)
		- [Oh My ZSH](https://ohmyz.sh/)
	- Linux (it comes with Linux, the GUI is the extra part!!)

- **Sites/References**
	- [Learn Enough Command Line to be Dangerous](https://www.learnenough.com/command-line-tutorial/basics)
	- [Rithm School Terminal Tutorial](https://www.rithmschool.com/courses/terminal)
	- [Learning Powershell](https://docs.microsoft.com/en-us/powershell/scripting/learn/understanding-important-powershell-concepts?view=powershell-6)
	- [Unix Command Cheat Sheet](https://learntocodewith.me/command-line/unix-command-cheat-sheet/)
- **Videos**
	- [Beginner's Guide to Bash - Joe Collins](https://www.youtube.com/watch?v=oxuRxtrO2Ag)
	- [Command Line Crash Course - Free Code Camp](https://www.youtube.com/watch?v=yz7nYlnXLfE)
	- [Shell Scripting Crash Course - Beginner Level - Traversy Media](https://www.youtube.com/watch?v=v-F3YLd6oMw)
	- [Windows 10 Bash & Linux Subsystem Setup - Traversy Media](https://www.youtube.com/watch?v=Cvrqmq9A3tA)

### Version Control and Git
Let's say you want to build a feature for a piece of software but you're working with a bunch of other people. How do you work on the same project together without messing each other's code up? Enter version control and git.

Version control is a system that keeps a record of a file or several files over their lifetime. You can access older versions later on if you need to or completely overwrite things if you so wish. 

#### Git and GitHub
You'll hear Git and GitHub used interchangeably but the difference isn't that complicated. Git is a revision or version control system and GitHub is a service that hosts or stores projects that use Git. There are other hosting services like GitLab and GitBucket, but GitHub is the accepted standard in open source. It's ostensibly free (charges for private, team only accessible repos).
- **Sites/References**
	- [Git docs](https://git-scm.com/docs)
	- [Pro Git Book Online Ver.](https://git-scm.com/book/en/v2)
	- [Learn Enough Git to be Dangerous](https://www.learnenough.com/git-tutorial/getting_started)
	- [Git Cheat Sheet](https://www.git-tower.com/blog/git-cheat-sheet/)
- **Videos**
	- [Learn Git in 20 minutes - Web Dev Simplified](https://www.youtube.com/watch?v=IHaTbJPdB-s)
	- [Git & GitHub Crash Course](https://www.youtube.com/watch?v=SWYqp7iY_Tc)
	- [Git Tutorial for Beginners: Command-Line Fundamentals - Corey Schafer](https://www.youtube.com/watch?v=HVsySz-h9r4)

Next time I'll return to form with some short descriptions and resources for learning JavaScript and CSS preprocessors. As always any comments, concerns, and critiques are welcome.