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. 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
There are no current on-campus repository servers recommended. If you require a local repository service, please reach out to us (researchit@iastate.edu) to discuss your project requirements.