Was sind Best Practices für die Verwendung der Git- Quellcodeverwaltung mit Unity 3D, insbesondere im Umgang mit der Binärität von Unity 3D-Projekten? Bitte beschreiben Sie den Workflow, welche Pfade in .gitignore enthalten sein würden, welche Einstellungen in Unity und / oder im Projekt festgelegt werden sollten und welche anderen besonderen Dinge zu beachten sind.
Hinweis: Mir ist klar, dass die Verwendung des Asset Servers die von Unity empfohlene Methode ist, aber ich möchte Git aus verschiedenen Gründen verwenden. Bitte keine Antworten, die besagen oder argumentieren, dass ich nur den Asset Server verwenden sollte. Der Asset Server ist für mich wirklich keine Option.
git
unity3d
version-control
Immer drücken
quelle
quelle
Antworten:
Das Folgende ist ein Auszug aus meinem persönlichen Blog .
Verwenden von Git mit 3D-Spielen
Update Oktober 2015: GitHub hat seitdem ein Plugin für Git namens Git LFS veröffentlicht , das sich direkt mit dem folgenden Problem befasst. Sie können jetzt einfach und effizient große Binärdateien versionieren!
Git kann mit sofort einsatzbereiten 3D-Spielen problemlos funktionieren. Die wichtigste Einschränkung hierbei ist jedoch, dass die Versionierung großer Mediendateien (> 5 MB) auf lange Sicht ein Problem sein kann, da sich Ihr Commit-Verlauf aufbläht. Wir haben dieses potenzielle Problem in unseren Projekten gelöst, indem wir das binäre Asset nur dann versioniert haben, wenn es als endgültig angesehen wird. Unsere 3D-Künstler verwenden Dropbox , um an WIP-Assets zu arbeiten, sowohl aus dem oben genannten Grund als auch weil es viel schneller und einfacher ist (nicht viele Künstler werden Git aktiv nutzen wollen!).
Git Workflow
Ihr Git-Workflow ist etwas, das Sie aufgrund Ihrer eigenen Erfahrungen als Team und Ihrer Zusammenarbeit selbst entscheiden müssen. Jedoch. Ich würde die entsprechend benannte Git Flow- Methode, wie sie vom ursprünglichen Autor hier beschrieben wurde, dringend empfehlen .
Ich werde hier nicht zu sehr darauf eingehen, wie die Methodik funktioniert, da der Autor sie perfekt und in wenigen Worten beschreibt, so dass es einfach ist, durchzukommen. Ich arbeite jetzt schon eine Weile mit meinem Team zusammen und es ist der beste Workflow, den wir bisher ausprobiert haben.
Git GUI Client-Anwendung
Dies ist hier wirklich eine persönliche Präferenz, da es einige Optionen in Bezug auf die Git-GUI gibt oder ob überhaupt eine GUI verwendet werden soll. Ich möchte jedoch die kostenlose SourceTree-Anwendung vorschlagen, da sie sich perfekt in die Git Flow-Erweiterung einfügt . Lesen Sie hier das SourceTree-Tutorial zur Implementierung der Git Flow-Methodik in ihrer Anwendung.
Unity3D-Ordner ignorieren
Für eine aktuelle Versionsprüfung hat Github die Unity.gitignore-Datei ohne Betriebssystemspezifikationen verwaltet.
Unity3D-Einstellungen
Für Versionen von Unity 3D v4.3 und höher:
External
Option inUnity → Preferences → Packages → Repository
.Edit
Menü und wählen SieProject Settings → Editor
:Version Control Mode
zuVisible Meta Files
.Asset Serialization Mode
zuForce Text
.File
Menü.Möchten Sie Ihr vorhandenes Repo auf LFS migrieren?
In meinem Blogbeitrag finden Sie Schritte dazu .
Zusätzliche Konfiguration
Eines der wenigen großen Probleme bei der Verwendung von Git mit Unity3D-Projekten ist, dass Git sich nicht um Verzeichnisse kümmert und nach dem Entfernen von Dateien gerne leere Verzeichnisse zurücklässt. Unity3D erstellt * .meta-Dateien für diese Verzeichnisse und kann zu einem Kampf zwischen Teammitgliedern führen, wenn Git-Commits diese Metadateien weiterhin hinzufügen und entfernen.
Fügen Sie diesen Git-Post-Merge-Hook zum
/.git/hooks/
Ordner für Repositorys mit Unity3D-Projekten hinzu. Nach jedem Git-Pull / Merge wird überprüft, welche Dateien entfernt wurden, ob das Verzeichnis, in dem es vorhanden war, leer ist, und wenn ja, gelöscht.quelle
Hidden Meta Files
?In Unity 4.3 mussten Sie auch die Option Extern aus den Einstellungen aktivieren, aber seit Unity 4.5 haben sie die Option dafür gelöscht, sodass der vollständige Einrichtungsprozess wie folgt aussieht:
Visible Meta Files
inEditor → Project Settings → Editor → Version Control Mode
Force Text
inEditor → Project Settings → Editor → Asset Serialization Mode
File
MenüAuch unser Team verwendet eine etwas erweiterte
.gitignore
Datei:Beachten Sie, dass die einzigen Ordner, die Sie unter Quellcodeverwaltung halten müssen,
Assets
und sindProjectSettings
.Weitere Informationen dazu, wie Sie Unity Project unter Quellcodeverwaltung halten können, finden Sie in diesem Beitrag .
quelle
Hidden Meta Files
?Was ist GIT?
Git ist ein kostenloses und Open Source verteiltes Versionskontrollsystem (SCM), das 2005 von Linus Torvalds (Linux OS-Gründer) entwickelt wurde. Es wurde entwickelt, um alles von kleinen bis zu großen Projekten schnell und effizient zu steuern. Führende Unternehmen wie Google, Facebook und Microsoft nutzen GIT täglich.
Wenn Sie mehr über GIT erfahren möchten, lesen Sie dieses Quick-Tutorial .
Stellen Sie zunächst sicher, dass Sie Ihre Git-Umgebung eingerichtet haben. Sie müssen sowohl Ihre lokale Umgebung als auch ein Git-Repository einrichten (ich bevorzuge Github.com).
GIT-Client-Anwendung Mac / Windows
Für die GIT GUI Client-Anwendung habe ich empfohlen, sich für Github.com zu entscheiden.
GitHub ist der Ort, an dem Sie Code mit Freunden, Kollegen, Klassenkameraden und völlig Fremden teilen können. Über fünf Millionen Menschen nutzen GitHub, um gemeinsam erstaunliche Dinge zu bauen.
Unity3d-Einstellungen
Sie müssen diese Einstellungen vornehmen
Wechseln Sie unter Bearbeiten → Projekteinstellungen → Editor → Versionskontrollmodus zu Sichtbare Metadateien.
Aktivieren Sie die Option Extern unter Unity → Einstellungen → Pakete → Repository
Wechseln Sie unter Bearbeiten → Projekteinstellungen → Editor → Asset-Serialisierungsmodus zu Text erzwingen.
Quelle: Verwenden von Git mit 3D-Spielen Quellcodeverwaltung
quelle
Preferences > Packages
in Unity 5.x Normal nicht finden ? tyUm alles zu ergänzen, ist es auch ideal, git lfs mit Unity zu verwenden. Ich benutze dies seit es herauskam und ich hatte keine Probleme damit.
Sie möchten dies
.gitattributes
neben Ihrer.gitignore
Datei hinzufügenDas ist meine fortlaufende Dateiliste. Wenn Sie zusätzliche Binärdateien verwenden, die nicht aufgeführt sind, fügen Sie diese hinzu.
Ich habe auch Dateien konfiguriert, um yamlmerge zu verwenden, Sie müssten dies einrichten. Sie können darüber hier lesen: http://docs.unity3d.com/Manual/SmartMerge.html
quelle
Wir haben jetzt eine nahtlose Integration in die Einheit mit der Erweiterung Github to Unity ... https://unity.github.com/
Die neue GitHub for Unity-Erweiterung bringt den GitHub-Workflow und mehr in Unity und bietet Unterstützung für große Dateien mit Git LFS und Dateisperrung.
Zum Zeitpunkt des Schreibens ist das Projekt in Alpha, kann aber weiterhin für persönliche Projekte verwendet werden.
quelle
Ich dachte, ich könnte
.gitignore
für jeden, der interessiert ist, einen einfacheren Beitrag veröffentlichen :quelle
UnityPackageManager/
undPackages/
) geändert haben .Die wichtigsten Dinge, die Sie bei der Verwendung von git für die Versionskontrolle des Unity-3D-Quellcodes beachten sollten:
(A) Checken Sie NICHT in den Bibliotheksordner ein . Ich habe diesen Fehler in der Vergangenheit mehrmals gemacht und dafür gelitten! Löschen ODER verschieben Sie den Bibliotheksordner, bevor Sie Ihr Projekt / Ihre Dateien zu git hinzufügen.
(B) Verwenden Sie "Visible Meta Files" - für die neuesten Unity-Versionen - 5.3.4 und höher. Dies geschieht standardmäßig. Für einige der früheren Versionen müssen Sie die Einstellungen unter Bearbeiten-> Projekteinstellungen-> Versionskontrolle ändern
(C) Verwenden Sie eine Gitignore-Datei für Unity, um sicherzustellen, dass die Vernunft erhalten bleibt und Dateien nicht unnötig hinzugefügt werden - wenn Sie sich auf Android / Tizen befinden - fügen Sie Regeln hinzu, um das Hinzufügen von APK- und TPK-Dateien zum Repository auszuschließen. Google sucht nach einer .gitignore-Datei für Unity ODER verwendet dieses von GitHub bereitgestellte .gitignore for Unity-Modell: https://github.com/github/gitignore/blob/master/Unity.gitignore
(D) Stellen Sie sicher, dass die Gitignore-Datei als erste hinzugefügte Datei zum Repository hinzugefügt wird, da ich in der Vergangenheit das Hinzufügen der Gitignore-Datei persönlich verpasst habe. Habe im Nachhinein viele Gedanken darüber, warum dies passiert ist - aber heutzutage kopiere ich einfach die Gitignore-Datei und füge sie als ersten Schritt beim Einrichten des Repositorys hinzu.
Gehen Sie wie folgt vor, um ein Unity-Projekt für Git vorzubereiten:
(1) Gehen Sie zum Projektordner
(2) Geben Sie git init ein.
(3) Kopieren Sie die .gitignore-Datei: Unter MacOS: cp ~ / Downloads / .gitignore Unter Windows: Kopieren Sie c: \ Users [Ihr Benutzername] \ Downloads.gitignore.
(4) git add .gitignore
(5) git add *
Hoffe das hilft ... alles Gute!
quelle
Edit -> Project Settings -> Editor
Stellen Sie die Versionskontrolle auf Metadateien ein. Stellen Sie die Asset-Serialisierung so ein, dass Text erzwungen wird.
Ich denke, das ist was du willst.
quelle
Ich würde es vorziehen, wenn Sie BitBucket verwenden, da es nicht öffentlich ist und es ein offizielles Tutorial von Unity zu Bitbucket gibt.
https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository
hoffe das hilft.
quelle
Sie können Github for Unity verwenden , eine Unity-Erweiterung , die den Git-Workflow in die Benutzeroberfläche von Unity integriert.
Github for Unity hat gerade Version 1.0 der Erweiterung veröffentlicht.
quelle
Nur die Ordner Assets und ProjectSettings müssen unter Git-Versionskontrolle stehen.
Sie können einen Gitignore wie diesen erstellen.
quelle
Unity bietet auch eine eigene Versionskontrolle für die Quellversion. Vor Unity5 war es UnityAsset Server, aber jetzt wird es abgeschrieben. und starten Sie ein neues SVN-Steuerungssystem namens Unity Collaborate. Das Hauptproblem bei der Verwendung von Unity und jedem SVN ist das Festschreiben und Zusammenführen von Szenen. Aber Non of Svn gibt uns die Möglichkeit, diese Art von Konflikten zu lösen oder Szenen zusammenzuführen. Hängen Sie also von Ihnen ab, mit welcher SVN Sie vertraut sind. Ich verwende das SmartSVN-Tool auf einem Mac. und Schildkröte an Fenstern.
quelle
Fügen Sie einfach den Subjet von Gitignore hinzu. Der empfohlene Weg ignoriert Library und Temp nur, wenn er im Stammverzeichnis Ihres Git-Projekts enthalten ist. Wenn Sie wie ich sind und manchmal ein Einheitsprojekt benötigen, um Teil des Repos zu sein, nicht das gesamte Repo, wären die richtigen Zeichenfolgen in gitignore:
quelle
Ich wollte einen sehr einfachen Workflow von jemandem hinzufügen, der in der Vergangenheit mit Git frustriert war. Es gibt verschiedene Möglichkeiten, Git zu verwenden. Die wahrscheinlich häufigsten für Unity sind GitHub Desktop, Git Bash und GitHub Unity
https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069 .
Im Wesentlichen machen sie alle dasselbe, aber die Wahl des Benutzers. Sie können Git für die Einrichtung großer Dateien verwenden, das 1 GB freien Speicher für große Dateien mit zusätzlichem Speicherplatz in Datenpaketen für 4 USD / Monat für 50 GB ermöglicht. Auf diese Weise können Sie Dateien> 100 MB in Remote-Repositorys übertragen (die tatsächlichen Dateien werden auf einem Computer gespeichert) Server und in Ihrem Repo einen Zeiger)
https://git-lfs.github.com/
Wenn Sie lfs aus irgendeinem Grund nicht einrichten möchten, können Sie Ihre Projekte in Windows nach Dateien> 128 MB durchsuchen, indem Sie size: large in das Verzeichnis eingeben, in dem Sie Ihr Projekt haben. Dies kann nützlich sein, um nach großen Dateien zu suchen, obwohl möglicherweise einige Dateien zwischen 100 MB und 128 MB übersehen werden.
Das allgemeine Format von Git Bash ist
git hinzufügen. (Fügt Dateien hinzu, die festgeschrieben werden sollen)
git commit -m 'message' (schreibt die Dateien mit einer Nachricht fest, sie befinden sich immer noch auf Ihrem PC und nicht im Remote-Repo, im Grunde wurden sie als neues Commit 'versioniert')
Git Push (Push-Dateien in das Repository)
Der Nachteil von git bash für Unity-Projekte ist, dass bei einer Datei> 100 MB erst beim Push ein Fehler angezeigt wird. Sie müssen dann Ihr Commit rückgängig machen, indem Sie Ihren Kopf auf das vorherige Commit zurücksetzen. Ein bisschen Ärger, besonders wenn Sie neu mit Git Bash sind.
Der Vorteil von GitHub Desktop besteht darin, dass vor dem Festschreiben von Dateien mit 100 MB eine Popup-Fehlermeldung angezeigt wird. Sie können diese Dateien dann verkleinern oder einer Gitignore-Datei hinzufügen.
Um eine Gitignore-Datei zu verwenden, erstellen Sie eine Datei mit dem Namen Gitignore in Ihrem lokalen Repository-Stammverzeichnis. Fügen Sie die Dateien einfach zeilenweise hinzu, die Sie weglassen möchten. SharedAssets und andere Nicht-Asset-Ordnerdateien können normalerweise weggelassen werden und werden automatisch im Editor neu gefüllt (Pakete können erneut importiert werden usw.). Sie können auch Platzhalter verwenden, um Dateitypen auszuschließen.
Wenn andere Leute Ihr GitHub-Repo verwenden und Sie klonen oder ziehen möchten, stehen Ihnen diese Optionen auch auf dem GitHub-Desktop oder der Git-Bash zur Verfügung.
Ich habe nicht viel über das Unity GitHub-Paket erwähnt, in dem Sie GitHub im Editor verwenden können, da ich persönlich die Benutzeroberfläche nicht sehr nützlich fand und ich denke, dass sie insgesamt niemandem helfen wird, sich mit Git vertraut zu machen, aber dies ist nur meine Präferenz.
quelle