unity3d
Verwenden der Git-Quellcodeverwaltung mit Unity
Suche…
Verwenden von Git Large File Storage (LFS) mit Unity
Vorwort
Git kann mit der Entwicklung von Videospielen sofort arbeiten. Der Hauptvorteil ist jedoch, dass die Versionsverwaltung großer (> 5 MB) Mediendateien langfristig ein Problem darstellen kann, da Ihr Commit-Verlauf aufgebläht wird - Git wurde ursprünglich nicht für die Versionsverwaltung von Binärdateien entwickelt.
Die gute Nachricht ist, dass GitHub seit Mitte 2015 ein Plug-In für Git namens LFS veröffentlicht , das sich direkt mit diesem Problem befasst. Sie können jetzt große Binärdateien einfach und effizient versionieren!
Schließlich konzentriert sich diese Dokumentation auf die spezifischen Anforderungen und Informationen, die erforderlich sind, um sicherzustellen, dass Ihr Git-Leben mit der Entwicklung von Videospielen gut funktioniert. Dieses Handbuch behandelt nicht die Verwendung von Git selbst.
Git & Git-LFS installieren
Ihnen als Entwickler stehen eine Reihe von Optionen zur Verfügung. Als erste Wahl können Sie die Kern-Git-Befehlszeile installieren oder eine der gängigen Git-GUI-Anwendungen für Sie erledigen lassen.
Option 1: Verwenden Sie eine Git-GUI-Anwendung
Dies ist wirklich eine persönliche Präferenz, da es viele Optionen gibt, was Git-GUI angeht oder ob überhaupt eine GUI verwendet wird. Sie haben eine Reihe von Anwendungen zur Auswahl, hier sind 3 der beliebtesten:
Nachdem Sie Ihre Anwendung installiert haben, gehen Sie bitte zu google und befolgen Sie die Anweisungen, um sicherzustellen, dass sie für Git-LFS eingerichtet ist. Dieser Schritt wird in diesem Handbuch übersprungen, da er anwendungsspezifisch ist.
Option 2: Installieren Sie Git & Git-LFS
Das ist ziemlich einfach - Installieren Sie Git . Dann. Installieren Sie Git LFS .
Git Large File Storage für Ihr Projekt konfigurieren
Wenn Sie das Git LFS-Plugin verwenden, um Binärdateien besser zu unterstützen, müssen Sie einige Dateitypen festlegen, die von Git LFS verwaltet werden sollen. Fügen Sie Ihrer .gitattributes
Datei im Stammverzeichnis Ihres Repositorys Folgendes .gitattributes
, um gängige Binärdateien zu unterstützen, die in Unity-Projekten verwendet werden:
# Image formats:
*.tga filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
# Audio formats:
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aiff filter=lfs diff=lfs merge=lfs -text
# 3D model formats:
*.fbx filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
# Unity formats:
*.sbsar filter=lfs diff=lfs merge=lfs -text
*.unity filter=lfs diff=lfs merge=lfs -text
# Other binary formats
*.dll filter=lfs diff=lfs merge=lfs -text
Einrichten eines Git-Repositorys für Unity
Beim Initialisieren eines Git-Repositorys für die Unity-Entwicklung müssen einige Dinge getan werden.
Ordner ignorieren
Im Repository sollte nicht alles versioniert werden. Sie können die untenstehende Vorlage zu Ihrer .gitignore
Datei im Stammverzeichnis Ihres Repositorys hinzufügen. Alternativ können Sie die Open Source Unity .gitignore auf GitHub überprüfen und alternativ mit gitignore.io eine Unity generieren .
# Unity Generated
[Tt]emp/
[Ll]ibrary/
[Oo]bj/
# Unity3D Generated File On Crash Reports
sysinfo.txt
# Visual Studio / MonoDevelop Generated
ExportedObj/
obj/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
# OS Generated
desktop.ini
.DS_Store
.DS_Store?
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
Weitere Informationen zum Einrichten einer .gitignore-Datei finden Sie hier .
Unity-Projekteinstellungen
Standardmäßig werden Unity-Projekte nicht für die korrekte Unterstützung der Versionsverwaltung eingerichtet.
- (Überspringen Sie diesen Schritt in v4.5 und höher.) Aktivieren Sie die Option
External
inUnity → Preferences → Packages → Repository
. - Wechseln Sie zu
Visible Meta Files
Edit → Project Settings → Editor → Version Control Mode
. - Wechseln Sie unter
Edit → Project Settings → Editor → Asset Serialization Mode
zuForce Text
Edit → Project Settings → Editor → Asset Serialization Mode
. - Speichern Sie die Szene und das Projekt im Menü
File
.
Zusätzliche Konfiguration
Eine der wenigen Ärgernisse, die man bei der Verwendung von Git mit Unity-Projekten hat, ist, dass Git keine Verzeichnisse interessiert und leere Verzeichnisse nach dem Entfernen von Dateien glücklich hinterlassen wird. Unity erstellt *.meta
Dateien für diese Verzeichnisse und kann zu *.meta
zwischen den Teammitgliedern führen, wenn Git-Commits diese Metadateien hinzufügen und entfernen.
Fügen Sie diesen Git-Post-Merge-Hook für Repositorys mit Unity-Projekten in den Ordner /.git/hooks/
. Nach jedem Git-Pull / Merge-Vorgang wird geprüft, welche Dateien entfernt wurden, ob das Verzeichnis, in dem es sich befand, leer ist und ob es gelöscht wird.
Szenen und Prefabs zusammenführen
Ein häufiges Problem bei der Arbeit mit Unity ist, wenn zwei oder mehr Entwickler eine Unity-Szene oder ein Prefab (* .unity-Dateien) ändern. Git weiß nicht, wie sie korrekt aus der Box zusammengefügt werden sollen. Glücklicherweise hat das Unity-Team ein Tool namens SmartMerge bereitgestellt, das die einfache Zusammenführung automatisch macht. Das erste , was zu tun ist , die folgenden Zeilen zu Ihrer hinzufügen .git
oder .gitconfig
- Datei: (Windows: %USERPROFILE%\.gitconfig
, Linux / Mac OS X: ~/.gitconfig
)
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
Unter Windows lautet der Pfad zu UnityYAMLMerge:
C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
oder
C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
und unter MacOSX :
/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge
Sobald dies erledigt ist, steht das Mergetool zur Verfügung, wenn Konflikte während der Zusammenführung auftreten. Vergessen Sie nicht, git mergetool
manuell git mergetool
, um UnityYAMLMerge auszulösen.