# Git
## Git for PLC projects
Version control can be difficult for PLC projects. This is primarily due to the fact that a lot of PLC project files are binary which means that they are difficult to merge. Git (and other version control systems) are setup to be able to merge and diff (compare) files that are stored in plain text. This means that they can interleave changes in a way that is likely to be understandable by someone that is trying to see what has changed and more importantly the files always remain openable by a computer. If binary files are merged in this way the files usually become corrupted and are unable to be opened. The best way to handle binary files in version control is for the system to simply keep a complete copy of the file every time it changes.
Here is a [video](https://www.youtube.com/watch?v=1g6eYnlzKtA&list=PLimaF0nZKYHz3I3kFP4myaAYjmYk1SowO) tutorial of using Git to manage a Beckhoff project. Beckhoff tends to prefer using Structured Text which works better with version control systems than Ladder or Function Block programs.