git
is a free and open source distributed version control system. It has many functionalities and was originally geared towards software development and production environment. In fact, Git was initially designed and developed in 2005 by Linux kernel developers (including Linus Torvalds) for Linux kernel development. Here is a fun video of Linus Torvalds touting git to Google.
git can be enabled on a specific folder on your file system to version files within that directory. In git (and other versions control systems) terms, this “tracked folder” is called repository (which formally is a specific data structure storing versioning information).
For scientists, git is a useful tool to help you to track changes you make to your scripts and enable you to share your codes with your collaborators. For example, if you break your code git can help you to revert to an earlier working version. Want one of your collaborators to add a feature to your code to do a specific analysis? Git can help you to do so in a smooth and organized manner.
You might also have heard of GitHub. GitHub is a company that hosts git repository online and provides several collaboration features. GitHub fosters a great user community and has built a nice graphical interface to git, adding great visualization capacities of your data.
Basics: https://try.github.io/
git workflow options in a collaborative environment
More advanced (branching): http://pcottle.github.io/learnGitBranching/
git full documentation: http://git-scm.com
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --list
On a Linux server (Aurora, Mazy, DataTeam, …) you will also have to cache your token. You can do so with the following line:
git config --global credential.helper 'cache --timeout=10000000'
Click here to know more about getting a GitHub token
For more info about git settings: https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup
Note: You can always overwrite these global identity settings for a specific repository by running these commands within the repository without the “global” option.
More on GitHub at NCEAS