# Coordinates - Date: 6th of September 2017 - Time: room is booked between 9:00 - 17:00 - Location: J1-84 # Teachers - Bowo - Jeroen - Jonathan - Mihai # Audience | Department | Organization | |--------------------------------------------|-----------------------------| | Human Genetics/ Bio -IT | LUMC/GenomeScan | | Human Genetics | LUMC | | Hematology | LUMC | | Cell biology | EMC | | Hematology | LUMC | | Molecular Cell Biology | LUMC | | Ouderengeneeskunde | LUMC | | Ouderengeneeskunde | LUMC | | KNO | LUMC | | molecular genetics | EMC | | Radiology | Netherland Cancer Institute | | Hematopoiesis | Sanquin | | Molecular Epidemiology | LUMC | | Dermatology | LUMC | | Directorate Education and Study Programmes | LUMC | | ? | Leiden University | | ? | Leiden University | | Dermatology | LUMC | # Previous course detailed program ## Introduction (9:00 - 9:30) - Jeroen - version control definition - motivation - repository types: * local * distributed * centralised - git history - GitHub and GitLab as central remotes - GitLab demonstration * logging in * landing page * profile settings * projects ## Practical (9:30 - 9:45) - local configuration * user.name * user.email - remote configuration * ssh key generation * add ssh key to GitLab ## Git basics (9:45 - 10:30) - Bowo - local repository init - clone an existing remote - hidden git directory - git operations overview: * track files areas * file states - config user.name, user.email, colored output - git operations flow: * status * add * commit * diff * log * checkout * reset * revert - HEAD - .gitignore ## Practical (10:30 - 11:00) - create a repository - create a file inside the repository - stage the file - commit the file - edit the file and stage it again - check log and see the differences - create another file and add it to .gitignore ## Break (11:00 - 11:15) ## Git and remote repositories (11:15 - 12:00) - Martijn - distributed git - view/add remotes - transferring commits between repositories: * fetch * merge * pull * push (-u) * clone - remote protocols: * local * HTTPS * SSH * Git protocol - GitLab ## Lunch (12:00 - 13:00) ## Practical (13:00 - 13:30) - create a GitLab project - add the GitLab project as remote for the local repository created during the previously practical - push to the GitLab remote - edit some file on GitLab - do git fetch and merge - change file locally and push to GitLab ## Data analysis (13:30 - 14:30) - Szymon - how GitLab might be used to deliver results to researchers and document their work - Markdown ## Break (14:30 - 14:45) ## Combing changes by merging (14:45 - 15:30) - Martijn - the git commit graph * briefly on branches - inspecting the commit graph * annotated log as an alias - merging from remotes * fast forward merge * three-way merge - basic merge conflict * resolve merge conflicts by hand * git mergetool * aborting a merge conflict ## Practical (15:30 - 16:00) - clone a GitLab project from one of the neighbours - check the commit graph - do a fast-forward merge - do a three-way merge - resolve a merge conflict # What to add? + more on branches + git clean + git stash + more on GitHub, GitLab, (Bitbucket?) * pull requests * ... + from the current tips and tricks: * git blame * git tag * git diff -w * ammend * modifying global ignore * commands aliases # What to remove? - data analysis # Next course program ## (10:00 - 10:30) Introduction - ## (10:30 - 11:15) Git basics - ## (11:15 - 12:00) Practical ## (12:00 - 13:00) Lunch ## (13:00 - 13:45) Collaboration: remotes - ## (13:45 - 14:15) Practical ## (14:15 - 14:30) Break ## (14:30 - 15:15) Collaboration: merging - ## (15:15 - 15:45) Practical ## (15:45 - 16:00) Break ## (16:00 - 16:30) Tips? - ## (15:30 - 16:00) Practical