think that each step is either a branch or a commit. whenever you're done, just switch to the next branch. even if you're git-illiterate, you could have a next.sh for pointing to the next step in the tutorial. same logic for check.sh to verify completion. you have built-in diff for changes between steps, you could work in whatever IDE you like, and it may not be limited to just code, too.
Here is a group that tracks public data sources in git: https://github.com/datasets