> For the complete documentation index, see [llms.txt](https://yu-sun.gitbook.io/essential-git-for-scientists/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yu-sun.gitbook.io/essential-git-for-scientists/basic-concepts/version-control.md).

# Version Control

When I was writting my first journal article, as many of others, I used file names to indicate its version. I had a `manuscrip.docx` as the beginning draft, sent to other coauthors to review, included the comments and ended up as `manuscript_v2.docx`. Typically, this will end up as `manuscript_final.docx`, which you wish to be the last version.&#x20;

A typical roadmap for saving your files is shown below.

```
manuscript.docx
manuscript_v2.docx
manuscript_v3.docx
...
manuscript_final.docx
```

In reality, this list goes on.

```
manuscript_final_v2.docx
manuscript_final_v3.docx
...
manuscript_final_never_change.docx
...
```

This is a live form of **version control,** despite being in a very inefficient way.&#x20;

If you only have two or three versions it's probably fine. However, the drawbacks are quite obvious:&#x20;

* You have multiple copies of the same document in the same folder.&#x20;
* Only you remember (hopefully) what has been done. It's hard to include others to collaborate.
* It's hard to know easily which one contains what changes.
* It lacks clarity on **why** you've made certain changes.
* There's no rules to protect the history, e.g. you could save a change in a previous version by accident.

In addition, this will quickly become unmanagable when there are associated files (like experiment data) for each version.

There's a much better way.
