Zum Inhalt

Git - diff für Excel- und LibreOffice Calc-Dateien

Git sieht eigentlich keine Versionsverwaltung von Binär-Dateien, wie Microsoft Word oder Microsoft Excel, im Standard vor. Das Tool war eigentlich mal dazu gedacht mit Flat Files zu versionieren, die in der Programmierung zu anfallen.

Aber dank seiner Flexibilität lässt sich Git so anpassen, dass es auch Microsoft Excel und LibreOffice Calc-Dateien verwalten kann.

Auch die beiden genannten Programme unterstützen uns bei dem Vorhaben, sowohl das Standarddateiformat von Excel und Calc ist eigentlich eine umbenannte zip-Datei, die sich bei

  • Microsoft Excel --> xlsx
  • LibreOffice Calc --> ods

nennt.

Probiert das einfach mal aus:

  1. Erstellt eine Datei mit einem der genannten Programme und speichert sie dann im jeweiligen Standardformat, also xlsx oder ods, ab.
  2. Benenne die Dateiendung um in *.zip
    1. Beispiel für xlsx: datei-xlsx.xlsx --> datei-xlsx.zip
    2. Beispiel für ods: datei-ods.ods --> datei-ods.zip
  3. Mit einem zip-Programm könnt ihr euch die einzelnen Dateien des zip-Archivs anschauen.
  4. Benennt nun die Dateien wieder um
    1. Beispiel für xlsx: datei-xlsx.zip --> datei-xlsx.xlsx
    2. Beispiel für ods: datei-ods.zip --> datei-ods.ods
  5. Öffnen nun die Datei entweder mit Microsoft Excel oder LibreOffice Calc und ihr werdet feststellen, dass der Inhalt sich nicht verändert hat. Es handelt sich um die gleiche Datei.

Git, binäre-Dateien und zip-Archive

Das oben beschriebene Vorgehen machen wir uns nun für Git nun zu nutzen.

Grob gesagt verklickern wir Git, dass

  1. es sich bei xlsx- und ods-Dateien um zip-Archive handelt, die es wunderbar versionieren kann
  2. es die xlsx- und ods-Dateien mit dem diff-Tool Microsoft Excel oder LibreOffice Calc öffnen soll, je nach Bedarf

Soweit so gut, nun muss Git nur noch beigebracht werden, die Dateien genau so zu handhaben, wie oben beschrieben.

Git das zip-Archiv beibringen

zip-Archive lernen wir Git über die globale Datei .gitconfig die sich unter Windows in diesem Pfad befindet C:\Users\benutzername.gitconfig.

Tragt einfach am Ende der Datei den Abschnitt ein

# zip-Versioning
[diff "zip"]
textconv = unzip -c -a

Git die diff-Tools für xlsx- und ods-Dateien beibringen

Nun geht es noch darum, dass die Dateien von Git auch wie ein zip-Archiv gehandelt werden und für diff mit den entsprechenden Programmen geöffnet wird.

Dazu erstellen wir einfach einen neuen Eintrag in der ~/.gitattributes des lokalen Git Repository.

Achtung ❗️ Es handelt sich hier um keine globale Einstellung, das müsst ihr für jedes Git Repository separat eintragen!

*.pptx diff=zip
*.xlsx diff=zip
*.ods diff=zip

Testlauf

Nachdem nun alle Einstellungen vorgenommen sind, kann der erste Testlauf durchgeführt werden.

In diesem Beispiel verwende ich ein LibreOffice Calc Dokument.

  1. Erstellt ein neues lokale Git Repository git init
  2. Erstellt die .gitattributes mit dem oben genannten Eintrag
  3. Erstellt eine neue ods-Datei mit dem Namen test.ods mit einem beliebigen Inhalt und speichert die Datei
  4. Führt den ersten Commit der ods-Datei durch git stauts --> git add test.ods --> git commit -m "1st Commit test.ods"
  5. Macht eine Änderung in der ods-Datei
  6. Führt den zweiten Commit mit der Änderung in das lokale Repository aus git stauts --> git add test.ods --> git commit -m "2nd Commit test.ods"

Wenn ihr nun die zwei Versionen miteinander vergleicht, dann werden euch die Änderungen angezeigt, die ihr jeweils akzeptieren oder ablehnen könnt. Im Screenshot verwende ich dafür Tortoise Git.

Achtung! Jede Änderung, die ihr an der Datei durchführt, also auch das akzeptieren und das Ändern der Datei erzeugt eine neue Version, die Git versionieren möchte. Speichert ihr die Datei dann ab, erzeugt das eine neue Version!

zu Schritt 3: Diese Datei ist das Original und wird per commit in das Git Repo übergeben.

Git - diff für Excels xlsx-Dateien

zu Schritt 5: Die erste Änderung an der Datei

Git - diff für Excels xlsx-Dateien

Da nun beide Versionen in eurem lokalen Working Repo sind, könnt ihr einen diff durchführen.

TortoiseGit - diff für xlsx-Dateien starten

Die Änderungen zwischen den beiden Versionen der Datei werden euch in dem Fenster "Änderungen verwalten" angezeigt.

Excel-Versionen vergleichen

Erfahrungswerte und Versionsverwaltung von Makros

Bisher habe ich noch keine großen Erfahrungen mit dem Verwalten von großen Excel-Dateien in Git. Ich habe bis jetzt nur ein paar kleinere Dateien in meinen Repos liegen.

Meine Makros verwalte ich aber bereits seit einiger Zeit als eigenständige Visual Basic-Dateien mit der Dateiendung "vb" in Git. Da ich viele der Makros für die unterschiedlichen Projekte wiederverwenden kann und dabei auch die ein oder andere Verbesserung einfließt, ist das sehr einfach über die Versionsverwaltung zu erledigen.

Habt ihr Best Practices für die Verwaltung von Excel-Dateien und Makros in Git die sich bewährt haben?

Gib mir gerne einen Kaffee ☕ aus ❗️

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.

Donation via PayPalDonation via LiberaPay

Donation via Bitcoin
Bitcoin Address: bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj

Source

Photo by Yancy Min on Unsplash