There are lots of ways to go about this, and it would require a lot of information about your desired workload and what you need. Revision control and rollback-support are very complex topics.
- Do you need to roll-back, and jump-forward?
- Do you need branching and merging? What happens if you roll-back and then continue from that point? Do you lose the changes on the abandoned branch and if so do they get purged from the database?
- Do you need to track different users and permissions in the content revisions?
- When you say relationships, what exactly do you mean? What kind of guarantees do you require?
Most CMS systems (like every system I've ever encountered) suck because they do it wrong. The chances of you getting this right are pretty slim. If you really need git, my suggestion is to use git. If you need a concurrent transactioning with git, you have two options:
- Start from the database and implement git. (Usually ends in epic failure)
- Start from git and implement MVCC or ties to the database. (Often ends in epic failure, see wiki.js)
Either way, good luck with those tasks by yourself. There are numerous git abstraction layers, and other CMS frameworks to start from.