# Code management with Git

This is the website for the course *Code and data management with Git*. This
course consists of an introduction to working with the
[Git](http://git-scm.com/) version control system for data analysis.

The Git system is widely used by software developers, but can also be used for
project management. In the LUMC we use [GitLab](https://git.lumc.nl) as a
collaborative environment on top of Git. By keeping track of all versions,
history, etc, GitLab makes your projects more reproducible and collaboration
with colleagues easy ([introduction](http://doc.gitlab.com/ce/gitlab-basics/README.html)).


## Prerequisites

Affinity with the UNIX shell is required, which can be gained by attending our
[Practical Linux](https://git.lumc.nl/courses/practical-linux-course)
course.

Our facilites include PCs, but you can bring your own laptop if you prefer that.


## Coordinates

Details for the next session:
- Date: April 13, 2023 
- Time: 10:00
- Location: J-1-82
- Teachers:
  - Mihai Lefter
- Registration via www.medgencentre.com. Direct access to the
[registration form](https://forms.lumc.nl/lumc2/GITcourse).

## Program

| Time  | Subject          |  Contents                 |
| ----- | -----------------| ------------------------- |
| 10:00 | [Introduction](https://git.lumc.nl/courses/gitcourse/wikis/files-most-recent/introduction.pdf)             | Welcome and version control introduction. |
| 10:30 | [Git basics](https://git.lumc.nl/courses/gitcourse/wikis/files-most-recent/basics.pdf) | Basic Git command line flow |
| 11:15 | [Practical](https://git.lumc.nl/courses/gitcourse/wikis/files-most-recent/basics_handouts.pdf)             |                                              |
| 12:00 | Lunch                                                                 |     |              
| 12:30 | [The git commit graph](https://git.lumc.nl/courses/gitcourse/wikis/files-most-recent/commit_graph.pdf)  | Commit graph, branching, merging, and resolving merge conflicts. |
| 13:15 | [Practical](https://git.lumc.nl/courses/gitcourse/wikis/files-most-recent/commit_graph_handouts.pdf)|                                              | 
| 14:00 | [Collaboration: remote repositories](https://git.lumc.nl/courses/gitcourse/wikis/files-most-recent/remotes.pdf)   | Sharing and collaborating via remotes. |
| 14:45 | [Practical](https://git.lumc.nl/courses/gitcourse/wikis/files-most-recent/remotes_handouts.pdf)            |                   |                           
| 15:30 | Questions, closing                                                                     |                   |                           

## Further reading

- [Code School - Try Git](https://try.github.io/) (you could even try this
  before the course)
- [The entire Pro Git book](http://git-scm.com/book) on the official [Git
  website](http://git-scm.com/)
- [Ry's Git Tutorial](http://rypress.com/tutorials/git/index.html)
- [Git tutorials at Atlassian](https://www.atlassian.com/git/tutorials)
- [Learn Git Branching](http://pcottle.github.io/learnGitBranching/)
- [Git cheat sheet](https://git.wiki.kernel.org/index.php/GitCheatSheet)
  (useful for printing)


## Past course dates

- [September 12th, 2018](https://git.lumc.nl/courses/gitcourse/wikis/session-september-12th-2018)
- [March 29th, 2018](https://git.lumc.nl/courses/gitcourse/wikis/session-march-29th-2018)
- [November 22nd, 2017](https://git.lumc.nl/courses/gitcourse/wikis/session-november-22nd-2017)
- [September 6th, 2017](https://git.lumc.nl/courses/gitcourse/wikis/session-september-6th-2017)
- October 14th, 2013: Git introduction course
- June 23rd, 2014: Git introduction course
- December 1st, 2015: Code and data management with Git
- April 25th, 2016: Code and data management with Git

For corresponding snapshots of this repository, see [tags](https://git.lumc.nl/humgen/gitcourse/tags).


## Using the course materials

There is one [Git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules)
on which this repository depends:

- **[presentation](https://git.lumc.nl/j.f.j.laros/presentation)** template for
  presentations in LaTeX.

First clone this repository, then fetch the data from the submodule:

    git clone https://git.lumc.nl/courses/gitcourse.git
    cd gitcourse
    git submodule init
    git submodule update

A new presentation can be added like this:

    cd presentation
    bash mkpres.sh ../mypresentation