===== Basic git. Interactive. =====

The lecture is scheduled on Day 1, Tuesday morning.

Lecturers: Emanuele Olivetti and Rike-Benjamin Schuppner.

==== Course Material ====

Outline of the lecture and demos:

  * Version Control: **git**.
  * Scenario 1: single developer, local repository.
  * Demo single+local
  * Scenario 2: Team of developers, central remote repository. Minimalistic.
  * Demo multi+remote
  * Extras: git branch, how to set up central repo.

Files:
  * {{:materials:emanuele_olivetti_autumn_school_2010_git.pdf|PDF slides of the lecture}}
  * {{:materials:demo_git_single_local.txt| git demo, scenario 1}}
  * {{:materials:demo_git_multi_remote.txt| git demo, scenario 2}}

[[version_control_exercises|Exercises]] are on a separate page

==== Accounts ====
Git repositories to be used during the school are hosted on escher.fuw.edu.pl.
Every students has an account which can be used only for repository access (see [[:accounts|the list of login names]]). Authentication is performed with the ssh public/private key-pair installed on every USB stick.
You don't need any special setup: when you run
  git clone <username>@escher.fuw.edu.pl:/git/autumnschool/shared
or
  git clone <username>@escher.fuw.edu.pl:personal.git
ssh will use the key automatically.

==== Weblinks and hints ====

  * [[http://book.git-scm.com/index.html|The git community book]]

For more control about what files to add to the staging area, it is often practical to use a graphical program. ‘git gui’ usually comes with the distribution and allows for easily picking the files you want to include in the next commit. (There is a share of other graphical tools for any OS available.)


For a common development workflow, have a look at [[http://nvie.com/git-model|“A successful Git branching model”]] and there is also a streamlined set of commands especially for this workflow which automatically takes care of switching the branches easily. [[http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/|“Why aren’t you using git-flow?”]] → [[http://github.com/nvie/gitflow]]

==== Additional notes ====

  * [[http://en.wikipedia.org/wiki/File_system_permissions#Octal_notation|An explanation of Unix file permissions]]