Commit 6997a160 authored by Tomas Tomecek's avatar Tomas Tomecek
Browse files

add full README

parent 0dab60de
Loading
Loading
Loading
Loading
+68 −0
Original line number Diff line number Diff line
# Mastering Git course

![xkcd Git](https://explainxkcd.com/wiki/images/4/4d/git.png)

6 weeks course on mastering git.

## About the course
Git is a powerful and easy to learn software which is mainly used for
collaborative software development. During this course you will learn unique
benefits and concepts of [Git](https://git-scm.com/) as well as its core features via extensive
examples and hands-on exercises. We hope you will develop the joy of working
with it. This course doesn’t require any prior knowledge of Git and is perfect
for anyone who wants a jump start in learning it. If you already have some
experience with Git, then this course will make you an expert, since it gives a
deep look at the fundamental commands.

## Objective
During this course you will learn unique benefits and concepts of Git as well
as its core features via extensive examples, hands-on exercises and mandatory
homework. The emphasis of the course is to prepare you for working on group
community upstream projects in enterprise. 

## Lectors
* Irina Gulina (Senior Software Quality Engineer)
* Tomáš Tomeček (Senior Principal Software Engineer)

## Prerequisites
* Be comfortable in a command-line environment.
* Understand basic programming concepts.
* Understand basic Computer Science concepts.
* Linux-based operating system is a big plus.

## Sylabus
* Introduction of this course, organization, motivation, intro to VCS and git
  * How did developers manage code before version control and why was it bad?
  * Definition of version control and what can you do with it.
  * Introduction to git.
  * Installing Git on your workstation (focus on Linux, other OS best effort)
  * The basics of Git Workflow and how to start with git
  * The most essential functionality: Cloning Repositories.
  * Basics of git: index, working tree, local repository, remote repository, configuration of git repositories, securing repositories with SSH keys.
* How does branching work in git
  * Art of commits.
  * Best practices for branching.
  * Git tags: why types there, how to use them and what’s their use case?
  * Stash: put your current work on a shelf and restore it later.
  * Moving and merging code: what to do when someone wants to contribute, how to accept it.
* Fixing mistakes
  * How to revert a change?
  * Look into history what has changed, audit changes done in a repository.
  * Who has changed this file and why and when?
  * Resolving conflicts between changes.
  * The holy grail of git: interactive rebase. You *need to* understand this.
  * Different ways to find and undo changes made to a Git project and when to use them.
* Working as a team with a git repository
  * Deep dive into remotes. What’s upstream and a fork?
  * How to work with multiple remote repositories?
  * Moving changes between remote repositories: push, pull and fetch
  * How can I check out someone else’s changes locally?
  * The golden rule of push.
  * Tracking remote repositories.
* Git Etiquette
  * How to write a good commit message?
  * Best practices for contributing to open source projects.
  * How to submit a pull request?
  * How to review a pull request?
  * You need to know how to use force-push properly.
* Git features and common open source git workflows
  * How to create an issue in an open source project?
  * Git interfaces and integrations
  * More content based on students' feedback