Versioning code and documentation with Git & GitHub
August 14, 2026 ยท View on GitHub
Lesson overview
License: Creative Commons Attribution 4.0 International License
Target Audience: Researchers, trainers, training providers
Level: Beginner
Prerequisites
To be able to follow this course, learners should:Have BASH/Linux/Unix command-line skills.
If you lack command-line experience, you can prepare by following this e-learning or Linux introduction.
Description
This hands-on course introduces Git and GitHub to researchers, trainers, support staff, and anyone interested in version control. Git and GitHub are essential tools for ensuring reproducibility and efficient collaboration in computational projects. You will learn how to configure Git, manage project history, and work with local and remote repositories.Through practical exercises, you will gain confidence in creating and managing repositories, applying core Git operations, and collaborating through branching and pull requests.
The presentation which goes alongside this material can be found here.
Learning Outcomes:
By the end of the course, learners will be able to:
- Configure Git on a local machine for version control.
- Create and manage repositories to track changes and maintain project history.
- Apply essential Git operations (staging, committing, pushing) for effective workflow locally and remotely.
- Connect and synchronize local repositories with GitHub.
- Implement branching and pull request workflows for collaborative development.
- Interpret Git history and logs to monitor project evolution and resolve issues.
- Troubleshoot common version control problems using basic debugging techniques.
Time estimation: 16 hours (2 days)
Requirements: The (technical) installation requirements are described in the chapter "Get ready".
Supporting Materials:
Proposed Schedule
Time Day 1 Time Day 2 09h30 Configurations & Introduction 09h30 Solving Conflicts 11h00 Coffee break 10h30 Coffee break 11h15 Routine usage part 1 (status-stage-commit) 10h30 Experimenting Risk Free: Working with Branchs 13h00 Lunch 12h30 Lunch 14h00 History & Comparing Versions 13h00 Tagging & Forking 14h40 Coffee break 15h00 Coffee break 14h55 Collaborating in GitHub 15h00 Using the browser 17h00 End of the day 17h00 End of the day Acknowledgement:
Funding: This project has received funding from VIB and ELIXIR-BE.
Authors and Contributors
Authors
Contributors
We welcome contributors for these materials
Citing this lesson
Please cite as:
Piereck Moura, B., Botzki, A., Collier, J.& Muyldermans, T. (2026, June 19). Versioning code and documentation with Git & GitHub. Zenodo. https://doi.org/10.5281/zenodo.20761246
Chapters List
Chapter Title Summary 1 Get Ready for the course
In this chapter you will find the step-by-step of what you need to get ready for this course.2 Introduction Find out the differences between Git and GitHub and Why is Git in several cases the best approach for versioning? 3 Get started with Git Understand how Git is structured, make your first commit, learn the basic routine to get one version saved and managed with Git. 4 A travel in Time: Check your versions Moving towards becoming more confident and using some of the power of Git. Learn to compare versions. 5 Connect to GitHub Connect your local repository to GitHub, make a remote backup of all your versions.
Chapter Title Summary 6 README.md & .gitignore - Important files Learn about README files and .gitignore files. These are essential for a good project development. 7 Collaborating In this chapter we teach you how to start the collaboration, best practices when working in a team and last but not least ... HOW TO SOLVE CONFLICTS! 8 Branches To work in collaboration or experiment with new code or documentation desing you can creat parallel developing areas. Learn more about the application of Branchs, it will add more flexibility and better organization. 9 Forks You find a nice repo that you want to work on a new idea, or you want your collaborators to work separatelly before their changed is reviewd and approved for merging. Here it is an strategy for you. 10 Aliases Create commands shortcut for your favorite commands. 11 GitHub & RStudio
A big developer of R ?
Integrate Git, GitHub and RStudio, use buttons avoiding extra command line.
Workshop and Material organization
We are using the interactive Open Educational Resource online/offline course infrastructure called LiaScript. It is a distributed way of creating and sharing educational content hosted on github. To see this document as an interactive LiaScript rendered version, click on the following link/badge: LiaScript
About us
About ELIXIR Training Platform
The ELIXIR Training Platform was established to develop a training community that spans all ELIXIR member states (see the list of Training Coordinators). It aims to strengthen national training programmes, grow bioinformatics training capacity and competence across Europe, and empower researchers to use ELIXIR's services and tools.
One service offered by the Training Platform is TeSS, the training registry for the ELIXIR community. Together with ELIXIR France and ELIXIR Slovenia, VIB as lead node for ELIXIR Belgium is engaged in consolidating quality and impact of the TeSS training resources (2022-23) (https://elixir-europe.org/internal-projects/commissioned-services/2022-trp3).
The Training eSupport System was developed to help trainees, trainers and their institutions to have a one-stop shop where they can share and find information about training and events, including training material. This way we can create a catalogue that can be shared within the community. How it works is what we are going to find out in this course.
About VIB and VIB Technologies
VIB is an entrepreneurial non-profit research institute, with a clear focus on groundbreaking strategic basic research in life sciences and operates in close partnership with the five universities in Flanders โ Ghent University, KU Leuven, University of Antwerp, Vrije Universiteit Brussel and Hasselt University.
As part of the VIB Technologies, the 12 VIB Core Facilities, provide support in a wide array of research fields and housing specialized scientific equipment for each discipline. Science and technology go hand in hand. New technologies advance science and often accelerate breakthroughs in scientific research. VIB has a visionary approach to science and technology, founded on its ability to identify and foster new innovations in life sciences.
The goal of VIB Technology Training is to up-skill life scientists to excel in the domains of VIB Technologies, Bioinformatics & AI, Software Development, and Research Data Management.
Editorial team for this course
Authors: @orcid(Alexander Botzki), @orcid(Bruna Piereck)
Technical Editors: Alexander Botzki
{
"@context": "https://schema.org/",
"@type": "LearningResource",
"@id": "https://elixir-europe-training.github.io/ELIXIR-TrP-TeSS/",
"http://purl.org/dc/terms/conformsTo": {
"@type": "CreativeWork",
"@id": "https://bioschemas.org/profiles/TrainingMaterial/1.0-RELEASE"
},
"description": "track the versions of your code and your documentation, make your research more reproducible and more impactifull",
"keywords": "FAIR, Reproducibility, RDM, code, data analysis",
"name": "Versioning code and documentation with Git & GitHub",
"license": "https://creativecommons.org/licenses/by/4.0/",
"educationalLevel": "beginner",
"competencyRequired": "Unix command line basic knowledge",
"teaches": [
"1. Configure Git on a local machine to prepare for version control in research projects.",
"2. Create and manage repositories using Git commands to track changes and maintain project history.",
"3. Apply basic Git operations (e.g., staging, committing, pushing) to work effectively with local and remote repositories.",
"4. Implement branching and pull request workflows to collaborate with others on shared codebases.",
"5. Interpret Git logs and history to understand project evolution and troubleshoot issues.",
"6. Collaborate with other people in your project."
],
"audience": "life scientists",
"inLanguage": "en-US",
"learningResourceType": [
"tutorial"
],
"author": [
{
"@type": "Person",
"name": "Bruna Piereck"
},
{
"@type": "Person",
"name": "James Collier"
},
{
"@type": "Person",
"name": "Alexander Botzki"
},
{
"@type": "Person",
"name": "Tuur Muyldermans"
}
]
}

