Learning Objectives

About learning objectives

This chapter lists the learning objectives for each chapter. The learning objectives should reflect the increases in knowledge, skills, and abilities that you are expected to have acquired after engaging with the contents of each chapter. If you feel like you completed every learning objective for one chapter, you should be ready to move on to the next!

Introduction to version control

💡 You know what version control is.
💡 You can argue why version control is useful (for research).
💡 You can name benefits of Git compared to other approaches to version control.
💡 You can explain the difference between Git and GitHub.

Command Line

💡 You can name the advantages of command-line interfaces for Git.
💡 You can navigate directories using absolute and relative paths.
💡 You can use shortcuts like the tilde or dots to navigate your file system.
💡 You can apply arguments and flags to customize command-line commands.
💡 You can use wildcards (*) for file selection.
💡 You can combine command-line commands.

Installation

💡 Downloading and installing Git

Setup

💡 You know how to set up Git for the first time
💡 You have set up Git on your computer
💡 You understand the difference between the three Git configuration levels
💡 You know how to configure your username and email address in Git
💡 You have set up your preferred text editor when working with Git
💡 You can escape the command-line text editor Vim

First steps with Git

💡 You can initialize a Git repository.
💡 You can check the status of a Git repository.
💡 You understand the difference between the staging area and a commit.
💡 You can stage and commit changes.
💡 You understand the difference between a commit message and a description.

Git essentials

💡 You know how to explore the commit history.
💡 You can compare different commits.
💡 You know how to use and create a .gitignore file.
💡 You can discuss which files can (not) be tracked well with Git and why.
💡 You know how to track empty folders in Git repositories.

Branches

💡 You understand the purpose and benefits of using branches in Git.
💡 You can create and switch between branches.
💡 You can merge branches and resolve merge conflicts.
💡 You can name at least three best practices when working with branches.

GitHub: Intro

💡 You can create a remote repository.
💡 You can connect your local Git repository to a remote repository service like GitHub or GitLab.
💡 You can pull and push changes to and from a remote repository.
💡 You can clone a repository from a remote repository.

GitHub: Advanced

💡 You know the purpose and components of a Pull Request.
💡 You know how to collaborate using the popular workflow strategy GitHub flow.
💡 You know the purpose and components of a README file.
💡 You can fork a repository.
💡 You can create a Pull Request from a forked repository.
💡 You can protect your main branch.

Tags and Releases

💡 You understand why Git Tags matter in version control and project management.
💡 You know the difference between lightweight and annotated tags and how to apply them.
💡 You can push and pull tags to a remote repository (e.g., GitHub).
💡 You understand how GitHub releases complement Git Tags.
💡 You can use Zenodo to archive your repository and make your work citable.

Issues

💡 You understand the purpose of GitHub Issues.
💡 You can create and manage Issues.
💡 You can reference an Issue in another issue.
💡 You can close an Issue with a commit or pull request.

Graphical User Interfaces

💡 You understand the benefits of Git GUIs compared to the command line
💡 You can name at least two Git operations that can be considered easier in a GUI compared to the command line
💡 You try out different GUIs and become familiar with their features
💡 You know how to manage branches in a GUI

Stashing and Co.

💡 You understand the importance of selectively staging and committing changes to avoid accidental commits.
💡 You can interactively review and stage changes within files.
💡 You can effectively remove unwanted changes and files from the repository.
💡 You understand how to safely revert commits and reset the repository to a previous state.