# Checklists ## Make use of Git - [ ] Make your project version controlled by initialising a Git repository in its directory using `git init`. - [ ] Add and commit all your files to the repository using `git add .` then `git commit`. - [ ] Continue to add and commit changes as your project progresses. Stage the changes in specific files to be committed with `git add filename`, and add messages to your commits. - [ ] Each commit should make one simple change. - [ ] No generated files committed. - [ ] Commit messages are meaningful, with a ~50 character summary at the top. - [ ] Commit messages are in the present tense and imperative. - [ ] Develop new features on their own branches, which you can create via `git checkout -b branch_name` and switch between via `git checkout branch_name`. - [ ] Branches have informative names. - [ ] Master branch is kept clean. - [ ] Each branch has a single purpose and only changes related to that purpose are made on it. - [ ] Once features are complete merge their branches into the master branch by switching to the feature branch and running `git merge master`. - [ ] Merge other's changes into your work frequently. - [ ] When dealing with merge conflicts make sure you fully understand both versions before trying to resolve them. ## Contribute to someone else's project - [ ] Clone their project's repository from GitHub `git clone repository_url`. - [ ] Make and commit changes. - [ ] Push your changes to you GitHub version of the project. - [ ] Make use of issues to discuss possible changes to a project. - [ ] Make pull requests on GitHub to share your work. - [ ] Clearly explain the changes you've made and why in your pull request. ## Make sure that your data is version controlled - [ ] If your projects involves data, check whether [Git LFS](), [git-annex](), or [DataLad]() fit your needs for version controlling it. - [ ] Share data together with your project to help others reproduce your results.