Summary

We have covered the extent to which you will use Git and GitHub in this course. However, there is a lot more you can do with them. To learn more, check out this article My Favorite Free Courses to Learn Git and Github — Best of Lot. A summary of jargon and useful commands follow.

Jargons

  • Repository: A collection of files tracked by Git. For example, the files that make up the content of this website is kept in a Git repository.

  • Remote: Any version of a repository that is not stored locally on a device is called a "remote". (So, GitHub is a service for you to host remote repositories). "Origin" is used to refer to the "remote" from which the local repository was originally downloaded from.

  • Commit: Git does not save any changes made to the files within your repository until you "commit" it. So, as a verb, it is the action of storing a new snapshot of the repository's state in the Git history. When "commit" is used as a noun, it refers to a single point in the Git history.

  • Staging: Let's explain this one with an example; assume you made changes to 4 files within your repository, but you only want to commit 2 of them because the other 2 are buggy or not complete yet. How do you commit only 2? Well, you put them in the "staging area" after which you commit. So, staging a file means that you have marked it for a commit.

Useful commands

  • git init: create an empty Git repository in a directory.
  • git add <filename(s)>: add files to the staging area to be included in the next commit
    • git add . : adds all files
  • git commit -m "message": take a snapshot of the repository and save it with a message about the changes
    • git commit -am "message": add files and commit changes all in one
  • git status : print what is currently going on with the repository
  • git log: print a history of all the commits that have been made
    • git log --pretty=oneline: list commit history in a compact format
  • git diff <commit> <commit>: show the changes made between the two commits (identified by their IDs)
  • git checkout <commit>: revert the repository back to a given commit. Use it if you want to discard changes to un-staged file/s.
  • git reset --hard <commit>: reset the repository to a given commit. Use it if you want to undo staging of a modified file.
  • git clone <url>: take a repository stored on a server (like GitHub) and downloads it
    • git clone <url> folder-name: clone to folder-name
    • git clone -b <branch> <url>: clone a specific branch
  • git push: push any local changes (commits) to a remote server
    • push only after you staged and committed the changes
  • git fetch: download all of the latest commits from a remote to a local device
  • git pull: pull any remote changes from a remote server to a local computer
  • git branch: list all the branches currently in a repository
  • git branch <name>: create a new branch called name
  • git checkout <name>: switch current working branch to name
  • git merge <name>: merge branch name into current working branch (normally master)
  • git merge origin/master: merge origin/master, which is the remote version of a repository normally downloaded with git fetch, into the local, preexisting master branch
  • git remote set-url origin https://github.com/USERNAME/REPOSITORY.git: changing a remote's URL

Here is a two-page PDF containing the most useful Git commands.

Not a fan of the terminal!

If you don't like working with the terminal to manage your git repository, you are in luck!

  • Most editors/IDEs have built in tools for working with Git/GitHub. For example, if you are using VSCode, checkout this article: Working with GitHub in VS Code.
  • There are also several great software that provides a graphical user interface (GUI) for using Git/GitHub. You may want to checkout gitkaraken, sourcetree, or gittower.