Der folgende Auszug stammt aus meinem persönlichen Blog.
Git mit 3D-Spielen verwenden
Update Oktober 2015: GitHub hat seitdem ein Plugin für Git namens Git LFS veröffentlicht, das direkt mit dem unten beschriebenen Problem umgeht. Sie können jetzt problemlos und effizient große Binärdateien versionieren!
Git funktioniert grundsätzlich gut mit 3D-Spielen. Der Hauptnachteil hierbei ist jedoch, dass das Versionieren von großen (>5 MB) Mediendateien langfristig ein Problem darstellen kann, wenn Ihr Commit-Verlauf aufgebläht wird. Wir haben dieses potenzielle Problem in unseren Projekten gelöst, indem wir das binäre Asset nur versioniert haben, wenn es als fertig betrachtet wird. Unsere 3D-Künstler verwenden Dropbox sowohl aus dem oben genannten Grund als auch, weil es viel schneller und einfacher ist (nicht viele Künstler werden aktiv Git nutzen wollen!).
Git-Workflow
Ihr Git-Workflow ist etwas, das Sie selbst anhand Ihrer eigenen Erfahrungen als Team und Ihrer Arbeitsweise entscheiden müssen. Allerdings empfehle ich dringend die angemessen benannte Git-Flow-Methodik, wie sie vom ursprünglichen Autor hier beschrieben wurde.
Ich werde hier nicht allzu sehr ins Detail gehen, wie die Methodik funktioniert, da der Autor sie perfekt und auch recht kurz beschreibt, sodass es leicht zu verstehen ist. Ich habe sie eine Weile lang mit meinem Team verwendet, und es ist der beste Workflow, den wir bisher ausprobiert haben.
Git GUI-Client-Anwendung
Das ist wirklich eine persönliche Präferenz, da es viele Optionen in Bezug auf Git-GUI gibt oder ob man überhaupt eine GUI verwenden möchte. Aber ich würde die kostenlose SourceTree-Anwendung empfehlen, da sie perfekt mit der Git-Flow-Erweiterung funktioniert. Lesen Sie das SourceTree-Tutorial hier, um die Git-Flow-Methodik in ihrer Anwendung zu implementieren.
Unity3D Ignore-Ordner
Für eine aktuelle Version besuchen Sie die von Github gepflegte Unity.gitignore-Datei hier ohne OS-spezifische Angaben.
# =============== #
# Von Unity generiert #
# =============== #
Temp/
Library/
# ===================================== #
# Von Visual Studio / MonoDevelop generiert #
# ===================================== #
ExportedObj/
obj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj
# ============ #
# Von OS generiert #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
Unity3D-Einstellungen
Für Unity 3D Versionen v4.3 und höher:
- (Überspringen Sie diesen Schritt bei v4.5 und höher) Aktivieren Sie die
External
-Option in Unity-Einstellungen Pakete Repository
.
- Öffnen Sie das
Bearbeiten
-Menü und wählen Sie Projekteinstellungen Editor
:
- Wechseln Sie den
Version Control Mode
zu Sichtbare Metadaten
.
- Wechseln Sie den
Asset Serialization Mode
zu Force Text
.
- Speichern Sie die Szene und das Projekt aus dem
Datei
-Menü.
Möchten Sie Ihr vorhandenes Repository zu LFS migrieren?
Schauen Sie sich meinen Blogbeitrag mit Schritten hier an.
Zusätzliche Konfiguration
Eines der wenigen Hauptärgernisse bei der Verwendung von Git mit Unity3D-Projekten ist, dass Git sich nicht um Verzeichnisse kümmert und gerne leere Verzeichnisse zurücklässt, nachdem Dateien daraus entfernt wurden. Unity3D erstellt *.meta-Dateien für diese Verzeichnisse und kann zu einem Kampf zwischen Teammitgliedern führen, wenn Git-Commits diese Meta-Dateien immer wieder hinzufügen und entfernen.
Fügen Sie diesen Git-Post-Merge-Hook in den /.git/hooks/
-Ordner für Repositories mit Unity3D-Projekten hinzu. Nach einem Git-Pull/Merge wird überprüft, welche Dateien entfernt wurden, ob das Verzeichnis, in dem sie sich befanden, leer ist und falls ja, wird es gelöscht.