# How to Git started This is the information provided for the git workshop held at the CIT on the 29th of January 2020. Table of Contents ================= * [How to Git started](#how-to-git-started) * [Using a GUI](#using-a-gui) * [Learning objectives](#learning-objectives) * [Assignments](#assignments) * [Assignment 1: Create a repository](#assignment-1-create-a-repository) * [Assignment 2: Your first commit](#assignment-2-your-first-commit) * [Assignment 3: Merge conflicts](#assignment-3-merge-conflicts) * [Assignment 5: Branching](#assignment-5-branching) * [Assignment 6: Merge branches (Or Rebase)](#assignment-6-merge-branches-or-rebase) * [Assignment 7: Pull requests](#assignment-7-pull-requests) * [Assignment 8: Undo / Revert commit](#assignment-8-undo--revert-commit) * [Assignment 9:](#assignment-9) * [Using the terminal](#using-the-terminal) * [Configure tooling](#configure-tooling) * [Terminal commands](#terminal-commands) * [Branches](#branches) * [Glossary](#glossary) * [Resources](#resources) ## Install Git Download git for your operating system at: git-scm.com/downloads ## Using a GUI You can use any GUI for git, the one we will be using for this workshop is Sourcetree
Another recommended GUI to use it Fork.
You can download these at https://www.sourcetreeapp.com/ and https://git-fork.com/ For other GUIs check out https://git-scm.com/downloads/guis/ Our remote git server is located at https://git.web.rug.nl/
You can log in with your usual p-number and password. This README has been written in markdown.
To get started see the following cheat sheet:
Cheatsheets:
[Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) ## Learning objectives - Introduction to VCS - Create new repository - README.md - Git ignore file - Stage - Commit - Push / pull - Fork - Pull request - Branche - Merge / Rebase - Undoing Things - Amend commits - Unstaging - Unmodifying a modified file - Revert and reset - Tag - Log ## Using the terminal ### Configure tooling Configure user information for all local repositories ```shell $ git config --global user.name "[name]" # Sets the name you want attached to your commit transactions $ git config --global user.email "[email address]" # Sets the email you want attached to your commit transactions ``` ```shell $ git config --global color.ui auto # Enables helpful colorization of command line output ``` ```shell $ git config --global core.editor "nano" # Sets the default editor to nano ``` If you want to save your https credentials run ```shell git config --global credential.helper store Omit --global to set the identity only in this repository. ``` Or you can add an [SSH key](https://help.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account) Check your config using ```shell $ git config --list ``` ### Terminal commands See changes that have been made ```shell git diff ``` Adding files to commit ```shell git add file1 file2 git add * ``` Committing files with commit message, this will stage your changes ```shell git commit -m "your commit message" ``` unstage by using ```shell use "git reset HEAD ..." to unstage ``` ### Branches Branches are an important part of working with Git. Any commits you make will be made on the branch you’re currently “checked out” to. Use git status to see which branch that is. Creates a new branch ```shell $ git branch [branch-name] $ git checkout -b [branch-name] ``` Switches to the specified branch and updates the working directory ```shell $ git checkout [branch-name] ``` Combines the specified branch’s history into the current branch. This is usually done in pull requests, but is an important Git operation. ```shell $ git merge [branch] ``` Deletes the specified branch ```shell $ git branch -d [branch-name] ``` Show all available branches ```shell git branch -a ``` Track remote branch ```shell git checkout --track origin/ ``` Delete remote branch ```shell git push --delete git remote prune ``` Check the log in graph form ```shell git log --graph --oneline ``` ## Glossary - git: an open source, distributed version-control system - GitHub: a platform for hosting and collaborating on Git repositories - commit: a Git object, a snapshot of your entire repository compressed into a SHA - branch: a lightweight movable pointer to a commit - clone: a local version of a repository, including all commits and branches - remote: a common repository on GitHub that all team members use to exchange their changes - fork: a copy of a repository on GitHub owned by a different user - pull request: a place to compare and discuss the differences introduced on a branch with reviews, comments, integrated tests, and more - HEAD: representing your current working directory, the HEAD pointer can be moved to different branches, tags, or commits when using git checkout ## Resources https://gitexplorer.com/
https://git-school.github.io/visualizing-git/
https://education.github.com/git-cheat-sheet-education.pdf
https://gitsheet.wtf/
https://www.keycdn.com/blog/git-cheat-sheet