Why use a Version Control System?
|
Version control software refers to a type of program that records sets of changes made to files
VCS is a ubiquitous tool for software development
Tracking changes makes it easier to maintain neat and functional code
Tracking changes aids scientific reproducibility by providing a mechanism to recreate a particular state of your code base
VCS provides a viable mechanism for 100’s of people to work on the same set of files
VCS lets you undo mistakes and restore a code base to a previous working state
Git is the most widely used version control software
Using Git facilitates access to online tools for publication and collaboration
|
Committing and History
|
Setup Git with your details using git config --global user.name "FIRST_NAME LAST_NAME" and git config --global user.email "email@example.com"
A Git repository is the record of the history of a project and can be created with git init
Git records changes to files as commits
Git must be explicitly told which changes to include as part of commit (known as staging changes) with git stage [file]...
Staged changes can be stored in a commit with git commit -m "commit message"
You can check which files have been changed and/or staged with git status
You can see the full changes made to files with git diff for unstaged files and git diff --staged
The commit history of a repository can be checked with git log
The command git revert commit_ref creates a new commit which undoes the changes of the specified commit
The command git reset --soft HEAD^ removes the previous commit from the history
|
Sharing your code
|
Public repositories are open to anyone to use and contribute.
Private repositories are just for yourself or a reduced set of contributors.
README contains a description of the software and, often, some simplified installation instructions.
The LICENSE describes how the software must be distributed and used.
Using one of the OSI (open source initiative) licenses is recommended if the repository is public.
CONTRIBUTING describes how other users can help develop the software.
CITATION helps others to cite your software in their own papers.
GitHub can be used to set up a software repository, share your code and manage who can access it, and how.
|
Remote repositories
|
origin is typically the name of the remote repository used by GitHub.
Local and remote repositories are not identical, in general.
Local and remote repositories are not synchronized automatically.
push and pull commands only affect the branch currently checked out.
|
Using GitHub Issues
|
Issues are a feature of GitHub which let you track work in a repository.
GitHub provides functionality for referencing issues in comments
Task lists can be created to keep track of a list of issues
Formatting syntaxes, templates, and subscribing to issues help with communication
|
Using GUIs and IDEs
|
Knowing how to use Git from the command-line is useful for understanding concepts and as a fallback
Text editors and IDEs often have built-in Git support
GUIs are particularly useful for viewing the graph-like structure of a repository
It is worth taking time to explore other tools for Git so you can find a workflow that suits you
|