# Source Control (With Github)

So. GitHub. What is it, exactly?

GitHub is a source control software and development platform that is used for a variety of reasons. It has a lot of tools to make development easier for programmers, it enables software developers to collaborate on tools (such as RPGMaker MV) that don’t have built-in collaboration features, and it saves your edit history— almost like snapshots— of your code so that you can do things like trace bugs back to their sources.&#x20;

Also, GitHub increases visibility into every aspect of what you’re actually doing when you mod. You can literally see exactly what you changed when you commit to a repository. This is called a diff.

Here’s an example of one:

<figure><img src="https://1531178822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwI4drJ7siZz9jLJbyGwT%2Fuploads%2FbuQTh6R8RykNTtYHSP3A%2Funknown.png?alt=media&#x26;token=a8ba1fcd-a7ba-4e7a-bd97-50fb6fa6705d" alt=""><figcaption><p>(Source, parallels diff, courtesy of FruitDragon)</p></figcaption></figure>

The red is the old change, the green is the new change.

I know I’m throwing a lot of new words out, so here’s a brief dictionary for GitHub terms.

* Repository: Short form “repo”, it's a folder that basically acts like a project folder. It can be compared to a Google Drive folder.
* Local Repository: The repository where it is located on your computer.
* Source Control: Also known as version control, it’s a system or software used to track changes to files (such as code files) over time.
* Diff: Short for ‘difference’, it’s basically a summary or overview of the changes that have occurred to a file.
* Origin: The online copy of your repository hosted by GitHub.
* Commit: Saving your changes to the repository, essentially creating a snapshot of the changes at the time of committing.
* Push: Uploading your commits to the origin, so that they can be downloaded (or pulled) by other collaborators or devices.
* Pull: Downloading new commits from the origin, so that your local repository is updated to the most recent version.
* Main: The main branch of your repository.
* Branch: A controlled environment to test certain changes before committing to the main branch, where the majority of the code resides. Can also be used to save a previous version, especially if you have an old release you want to keep. (Such as a demo release.)\\

<figure><img src="https://1531178822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwI4drJ7siZz9jLJbyGwT%2Fuploads%2FrBRzyftTYug66E5J3q47%2Funknown.png?alt=media&#x26;token=7a2bf18c-4c49-4c05-b4f2-64dd9ad1b415" alt=""><figcaption><p>Here’s an example of the branches in the parallels repository.</p></figcaption></figure>

And now here’s a handy link to a [slideshow](https://docs.google.com/presentation/d/19Bi-uSRFUoT2zRqaMCeWgNKQf5VjvmUBXRWGg6CesrI/edit#slide=id.g2dc6bc93425_4_1783) that talks more about the terms I just defined.&#x20;

(Note: GitHub isn’t the only type of source control software out there. If you’d rather use something else, that’s up to you. OMORI itself was made using DropBox as a source control software (somehow…?), which goes to show that you could probably use just about anything. However, GitHub is definitely one of the most versatile and powerful tools out there for source control and collaboration, and a lot of OMORI modders use it. Once you understand what to do, it’s also easy to use. So this tutorial will be talking only about GitHub specifically.)

Now let’s get into how to use GitHub for OMORI modding.\\
