Git is a general purpose distributed revision-control system. To unpack this a bit there's a few relevant parts we might wish to write about
[ ] Version control systems
[ ] Centralized vs decentralized VCS
Version control
Version control software (VCS) are an important group of software tools for managing workflows that involve keeping track of versions of documents.
Many of these systems are designed around the notion of being able to calculate differences between documents (deltas). Being able to compute differences between versions leads to a number of powerful possibilities (reports on differences between versions, merging changes, referencing change sets directly, creating patches, etc). To be able to compute a difference the files must be stored in such a manner that the software can detect what changed, a plain text file (such as a markdown document) is perfect for this. Any changes to the document will always be seen in the lines of the file that were responsible for it. This is in contrast to some other file types like old word document files where a change to one line is hard to locate in the file, or images where changing the file won't lead to a nice textual summary of what changed.
Distributed vs centralized
Git is a decentralized version control system. Practically speaking this matters for the following reasons:
Each repository is essentially now a backup, I have yet to see a project using Git where a large amount of work was lost. Even if one machine goes down you still have access to the data from the other machines, the decentralization is a very nice backup feature in disguise. Remember that if you didn't have this you need to think about backups and disaster recovery strategies, not having to be so worried about this means less risk and less mental burden.
Because the system is decentralized it has been designed to support multiple people working on the same document at the same time, and it does this well.
You do have issues like being "locked out" of your files, some centralized systems have a very simple way to maintain integrity of files being edited, they are a first-come-first-served system where the first person to edit just locks everyone else out. While this is an improvement on "merging hell" where everyone wastes time on merging in their changes this is a very heavy handed approach that will stop people from working on documents easily at the same time. These lock-based systems have fallen out of favor as a result in recent years.
If the internet goes down you can still keep working without losing your changes (https://www.lesinskis.com/git_without_internet.html). With other cloud services if the internet goes down or you have account issues you are often unable to continue working as you would before.
There are some downsides to the decentralization, mostly that you have to have a strategy for maintaining a single source of truth that people know they can refer to. GitHub makes this step easy if the repository is the single source of truth. The other downside is that you can't have a real time collaborative editing experience that's as smooth as the centralized offerings like "google docs" for example.
Git is a general purpose distributed revision-control system. To unpack this a bit there's a few relevant parts we might wish to write about
Version control
Version control software (VCS) are an important group of software tools for managing workflows that involve keeping track of versions of documents.
Many of these systems are designed around the notion of being able to calculate differences between documents (deltas). Being able to compute differences between versions leads to a number of powerful possibilities (reports on differences between versions, merging changes, referencing change sets directly, creating patches, etc). To be able to compute a difference the files must be stored in such a manner that the software can detect what changed, a plain text file (such as a markdown document) is perfect for this. Any changes to the document will always be seen in the lines of the file that were responsible for it. This is in contrast to some other file types like old word document files where a change to one line is hard to locate in the file, or images where changing the file won't lead to a nice textual summary of what changed.
Distributed vs centralized
Git is a decentralized version control system. Practically speaking this matters for the following reasons:
There are some downsides to the decentralization, mostly that you have to have a strategy for maintaining a single source of truth that people know they can refer to. GitHub makes this step easy if the repository is the single source of truth. The other downside is that you can't have a real time collaborative editing experience that's as smooth as the centralized offerings like "google docs" for example.