Ich bin auf diese Frage gestoßen, da ich ein ähnliches Problem habe, bei dem etwas, das sich einer DB-basierten Verzeichnisstruktur annähert, 'Dateien' speichert und ich Git brauche, um es zu verwalten. Es wird mithilfe der Replikation über eine Cloud verteilt, daher erfolgt der Zugriffspunkt über MySQL.
Der Kern der obigen Antworten scheint ebenfalls eine alternative Lösung für das gestellte Problem vorzuschlagen, bei der es darum geht, mit Git etwas in einer Datenbank zu verwalten. Daher werde ich versuchen, diese Frage zu beantworten.
Git ist ein System, das im Wesentlichen eine Datenbank mit Deltas (Unterschieden) speichert, die wieder zusammengesetzt werden können, um einen Kontext zu reproduzieren. Die normale Verwendung von git setzt voraus, dass der Kontext ein Dateisystem ist und diese Deltas in diesem Dateisystem unterschiedlich sind, aber eigentlich ist alles git eine hierarchische Datenbank von Deltas (hierarchisch, da in den meisten Fällen jedes Delta ein Commit mit mindestens 1 ist Eltern, in einem Baum angeordnet).
Solange Sie ein Delta erzeugen können, kann Git es theoretisch speichern. Das Problem ist normalerweise, dass Git erwartet, dass der Kontext, in dem Delta generiert wird, ein Dateisystem ist. Wenn Sie einen Punkt in der Git-Hierarchie auschecken, erwartet es, dass ein Dateisystem generiert wird.
Wenn Sie Änderungen in einer Datenbank verwalten möchten, haben Sie zwei diskrete Probleme, die ich separat behandeln würde (wenn ich Sie wäre). Das erste ist das Schema, das zweite sind Daten (obwohl Sie in Ihrer Frage angeben, dass Daten nichts sind, worüber Sie sich Sorgen machen). Ein Problem, das ich in der Vergangenheit hatte, war eine Dev- und Prod-Datenbank, in der Dev inkrementelle Änderungen am Schema vornehmen konnte. Diese Änderungen mussten in CVS dokumentiert und für das Leben freigegeben werden, zusammen mit Ergänzungen zu einer von mehreren "statischen" Datenbanken. Tabellen. Dazu haben wir eine dritte Datenbank namens Cruise eingerichtet, die nur die statischen Daten enthielt. Zu jedem Zeitpunkt konnte das Schema von Dev und Cruise verglichen werden, und wir hatten ein Skript, um den Unterschied dieser beiden Dateien zu nehmen und eine SQL-Datei mit ALTER-Anweisungen zu erstellen, um sie anzuwenden. Ebenso alle neuen Daten, könnte in eine SQL-Datei mit INSERT-Befehlen destilliert werden. Solange Felder und Tabellen nur hinzugefügt und nie gelöscht werden, kann der Prozess das Generieren der SQL-Anweisungen zum Anwenden des Deltas automatisieren.
Der Mechanismus, durch den Git Deltas erzeugt, ist diffund der Mechanismus, durch den es 1 oder mehrere Deltas mit einer Datei kombiniert, wird aufgerufen merge. Wenn Sie eine Methode zum Unterscheiden und Zusammenführen aus einem anderen Kontext finden können, sollte git funktionieren, aber wie bereits erläutert, bevorzugen Sie möglicherweise ein Tool, das dies für Sie erledigt. Mein erster Gedanke zur Lösung dieses Problems ist https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#External-Merge-and-Diff-Tools, in dem detailliert beschrieben wird, wie das interne Diff und die internen Git ersetzt werden Werkzeug zusammenführen. Ich werde diese Antwort aktualisieren, wenn ich eine bessere Lösung für das Problem finde, aber in meinem Fall erwarte ich, dass ich nur Datenänderungen verwalten muss, sofern sich ein DB-basierter Dateispeicher ändern kann, also meine Lösung ist möglicherweise nicht genau das, was Sie brauchen.