Version Control with Git

What is version control?

Version control is the process of tracking the changes made to a file over time (typically code, but could be nearly anything). The most popular version control systems today are distributed in nature, allowing for multiple people to easily collaborate on a project together.

Read more about version control: https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control

Why should I use version control software for my research?

  • Ability to revert things that don't work 
  • Easy comparisons to prior versions
  • Remote backup of your source code
  • Audit logs track changes made to the file (what was changed, when it was changed, and by whom)
  • Efficient collaboration, with the ability to merge changes from multiple users

Best Practices:

  • Use SSH for Git
  • Commit early & often
  • Make a .ignore file, and keep things like passwords, secure tokens, and binaries out of your repository
  • Use meaningful commit messages
  • Perform merges and resolve conflicts as soon as possible

Version Control Options:

GitHub

GitHub is a Web-based Git repository hosting service. We recommend GitHub for public projects. GitHub is widely used in the academic and open source communities, and provides an easy way for people to find and use your code. GitHub provides access control and several collaboration features such as bug tracking, feature requests, and task management for projects. 

Academic teams are easy to form and provide private repositories. After GitHub's recent acquisition by Microsoft, they have also opened up unlimited private repositories for regular accounts with a limited number of collaborators.  Contact us if you want advice on how to manage a GitHub team or help establishing an academic account.

Bitbucket

Bitbucket is another option for projects that need to be private. Bitbucket Cloud is free for teams of 5 or less, and provides free private repositories.

On Campus

If you are looking for local secure version control, we have several options. We have centrally managed source code control systems that you can sign in to with your IASTATE credentials. You can make public or private repositories, and manage collaborators.

Local GitLab: