Comment utiliser Git pour le contrôle des sources D'Unity3D?

quelles sont les meilleures pratiques pour utiliser Git contrôle des sources avec Unity 3D, en particulier pour traiter de la nature binaire des projets Unity 3D? Veuillez décrire le flux de travail, les chemins qui seraient inclus .gitignore, quels paramètres doivent être définis dans Unity et / ou le projet, et toute autre chose spéciale qui doit être noté.

Note: je me rends compte que l'utilisation du serveur Asset est la méthode recommandée par Unity, mais je voudrais utiliser Git pour un variété de raisons. S'il vous plaît pas de réponses que de l'état ou de dire que je doit simplement utiliser le Serveur Actif. Le serveur Asset N'est vraiment pas une option pour moi.

413
demandé sur WaleedYaser 2013-08-14 10:57:26

13 réponses

ce qui suit est un extrait de mon blog personnel .

utilisant Git avec des jeux 3D

mise à jour Octobre 2015: GitHub a depuis publié un plugin pour Git appelé git LFS qui traite directement avec le problème ci-dessous. Vous pouvez maintenant facilement et efficacement version de grands fichiers binaires!

Git peut fonctionner très bien avec la 3D jeux hors de la boîte. Cependant, la principale mise en garde ici est que la version de gros fichiers (>5 Mo) peut être un problème à long terme alors que votre historique de propagation gonfle. Nous avons résolu ce problème potentiel dans nos projets en versionnant seulement l'actif binaire quand il est considéré final. Nos artistes 3D utilisent Dropbox pour travailler sur WIP actifs, à la fois pour la raison ci-dessus et parce que c'est beaucoup plus rapide et plus simple (peu d'artistes activement souhaitez utiliser Git!).

Git

votre flux de travail Git est quelque chose que vous devez décider pour vous-même compte tenu de vos propres expériences en tant qu'équipe et de la façon dont vous travaillez ensemble. Cependant. Je recommande fortement le nom approprié git Flow methodology comme décrit par l'auteur original ici .

Je ne vais pas entrer dans trop de profondeur ici sur la façon dont la la méthodologie fonctionne comme l'auteur le décrit parfaitement et en quelques mots trop il est facile de passer à travers. Je travaille avec mon équipe depuis un certain temps maintenant, et c'est le meilleur workflow que nous ayons essayé jusqu'à présent.

Git GUI Client Application

C'est vraiment une préférence personnelle ici car il y a pas mal d'options en termes de git GUI ou de savoir s'il faut utiliser une GUI du tout. Mais je voudrais suggérer l'application gratuite SourceTree comme il se branche parfaitement avec l'extension de flux Git. Lire le tutoriel SourceTree ici sur la mise en œuvre de la méthodologie Git Flow dans leur application.

Unity3D Ignorer Les Dossiers

pour une version à jour de la caisse Github maintained Unity.gitignore fichier sans les détails de L'OS.

# =============== #
# Unity generated #
# =============== #
Temp/
Library/

# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
ExportedObj/
obj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj

# ============ #
# OS generated #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

Unity3D Settings

pour versions de Unity 3D v4.3 et plus:

  1. (sauter cette étape dans v4.5 et plus) activez l'option External dans Unity → Preferences → Packages → Repository .
  2. ouvrir le Edit menu et sélectionner Project Settings → Editor :
    1. Switch Version Control Mode à Visible Meta Files .
    2. Switch Asset Serialization Mode à Force Text .
  3. Enregistrer la scène et le projet de File dans le menu.

vous voulez migrer votre rapport existant vers LFS?

consultez mon blog pour les étapes sur la façon de le faire ici .

Configuration Supplémentaire

l'un des rares inconvénients majeurs de l'utilisation de Git avec Unity3D projects est que Git ne se soucie pas des répertoires et laissera volontiers des répertoires vides après leur suppression. Unity3D fera *.méta-fichiers pour ces répertoires et peut causer un peu de bataille entre les membres de l'équipe lorsque git commits continue d'ajouter et de supprimer ces méta-fichiers.

Ajouter cette Git post-fusion crochet à la /.git/hooks/ dossier pour les dépôts avec Unity3D projets dans leur. Après n'importe quelle git pull/merge, il regardera quels fichiers ont été supprimés, vérifiera si le répertoire dans lequel il existait est vide, et si oui supprimera.

452
répondu S.Richmond 2017-09-29 11:03:01

dans L'Unité 4.3, vous avez aussi dû activer l'option externe à partir des préférences, mais depuis L'Unité 4.5 ils ont abandonné l'option pour cela, donc le processus complet de configuration ressemble à:

  1. bascule Visible Meta Files dans Editor → Project Settings → Editor → Version Control Mode
  2. bascule Force Text dans Editor → Project Settings → Editor → Asset Serialization Mode
  3. Enregistrer la scène et le projet de File menu

aussi notre équipe utilise un peu plus étendu .gitignore fichier:

# =============== #
# Unity generated #
# =============== #
Temp/
Library/

# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
ExportedObj/
obj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj

# ============ #
# OS generated #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

notez que les seuls dossiers que vous devez garder sous contrôle source sont Assets et ProjectSettings .

pour plus d'informations sur le maintien du projet unité sous contrôle source, vous pouvez trouver dans ce message .

51
répondu zasadnyy 2014-12-20 18:56:55

Qu'est-ce que GIT?

git est un système de contrôle de version distribué (SCM) développé par Linus Torvalds en 2005. Il est créé pour contrôler tout, des petits aux grands projets, avec rapidité et efficacité. Les grandes entreprises comme Google, Facebook, Microsoft utilisent git everyday.

si vous voulez en savoir plus sur GIT cochez cette case tutoriel rapide ,

assurez-vous D'abord que votre environnement Git est prêt.Vous devez configurer à la fois votre environnement local et un dépôt Git (je préfère Github.com).

application client Git Mac / Windows

pour l'application client GIT gui je vous ai recommandé d'aller avec Github.com,

GitHub est l'endroit pour partager le code avec des amis, des collègues, des camarades de classe et des étrangers. Plus de cinq millions de personnes utilisent GitHub pour construire ensemble des choses extraordinaires.

Unity3d paramètres

Vous avez besoin de faire ces paramètres

Switch to Visible Meta Files in Edit → paramètres du projet → éditeur → Mode de contrôle de Version.

enter image description here

activer l'option externe dans Unity → Préférences → paquets → dépôt

enter image description here

Switch to Force Text in Edit → paramètres du projet → éditeur → Mode de sérialisation des biens.

enter image description here

Source: utilisant Git avec 3D Games Source Control

27
répondu NabeelSaleem 2015-08-09 19:44:46

pour ajouter à tout énoncé, il est également idéal d'utiliser git lfs Avec unité. Je l'utilise depuis qu'il est sorti et il n'a eu aucun problème.

vous voudrez ajouter ceci .gitattributes à côté de votre .gitignore file

*.cs diff=csharp text
*.cginc text
*.shader text

*.mat merge=unityyamlmerge eol=lf
*.anim merge=unityyamlmerge eol=lf
*.unity merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf
*.physicsMaterial2D merge=unityyamlmerge eol=lf
*.physicsMaterial merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf

*.a filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.FBX filter=lfs diff=lfs merge=lfs -text
*.rns filter=lfs diff=lfs merge=lfs -text
*.reason filter=lfs diff=lfs merge=lfs -text
*.lxo filter=lfs diff=lfs merge=lfs -text

C'est ma liste de fichiers mobiles. Si vous utilisez des fichiers binaires supplémentaires non des listes, ajoutez-les.

j'ai aussi des fichiers configurés pour utiliser yamlmerge, vous devez cette mise en place. Vous pouvez le lire ici: http://docs.unity3d.com/Manual/SmartMerge.html

16
répondu rygo6 2016-02-02 17:42:17

j'ai pensé que je pourrais poster un plus simple .gitignore pour quiconque est intéressé:

# Ignore Everything
/*

# Except for these:
!/.gitignore
!/Assets
!/ProjectSettings
6
répondu Get Off My Lawn 2015-06-25 20:11:40

nous avons maintenant une intégration transparente à l'unité avec Github à L'extension de L'Unité... https://unity.github.com/

la nouvelle extension Github for Unity apporte le workflow GitHub et plus à Unity, en fournissant un support pour les gros fichiers avec Git LFS et le verrouillage des fichiers.

au moment de la rédaction du projet est en alpha, mais est encore utilisable pour des projets personnels.

4
répondu Bhupen 2017-09-26 15:11:04

Edit -> Project Settings -> Editor

définit le contrôle de Version aux méta-fichiers. Définir la sérialisation de L'actif pour forcer le texte.

je pense que c'est ce que vous voulez.

2
répondu afpro 2015-11-28 17:03:22

seuls les dossiers Assets et ProjectSettings doivent être sous le contrôle de Git version.

vous pouvez faire un gitignore comme ça.

[Ll]ibrary/
[Tt]emp/
[Oo]bj/

# Autogenerated VS/MD solution and project files
*.csproj
*.unityproj
*.sln
*.suo
*.userprefs

# Mac
.DS_Store
*.swp
*.swo

Thumbs.db
Thumbs.db.meta

.vs/
1
répondu EllisonLee 2017-07-03 08:39:56

Les principales choses à retenir lors de l'utilisation de git pour unity-3d version du code source de contrôle:

(A) NE PAS check-in le dossier de la Bibliothèque de . J'ai fait cette erreur plusieurs fois dans le passé et j'en ai souffert! Supprimer ou déplacer le dossier de la bibliothèque avant d'ajouter votre projet / fichiers dans git.

(B) utiliser" fichiers Meta visibles " - pour les plus récentes versions de unity-5.3.4 et plus ce qui se passe par défaut. Pour certaines des versions antérieures, vous devez modifier les paramètres dans: Modifier-> Paramètres Du Projet - > Contrôle De Version

(c) utiliser A.gitignore fichier pour L'unité - pour s'assurer que la santé mentale est maintenue et les fichiers ne sont pas inutilement ajoutés - si sur android / tizen - ajouter des règles pour exclure les fichiers APK et TPK d'être ajoutés au dépôt. Autour de Google pour une .gitignore fichier d'unité OU d'autre utilisation de ce modèle .gitignore pour l'Unité fourni par GitHub: https://github.com/github/gitignore/blob/master/Unity.gitignore

(D) assurez-vous que l' .le fichier gitignore est ajouté au dépôt comme premier fichier ajouté - parce que dans le passé j'ai personnellement manqué ajouter.dossier gitignore. ont beaucoup de pensées rétrospectivement sur la raison pour laquelle cela s'est produit - mais de nos jours, Je ne fais que copier et ajouter .le fichier gitignore comme première étape de la mise en place du dépôt.

So... pour faire un L'unité de projet prêt pour git, procédez de la manière suivante:

(1) Aller au dossier du projet

(2) Type git init .

(3) Copier le .fichier gitignore: Sur MacOS: cp ~ / Downloads/.gitignore Sous Windows: copy c:\Users [votre nom d'utilisateur]\Downloads.gitignore .

(4) la commande git add .gitignore

(5) git add *

Espérons que cette aide... tout le meilleur!

1
répondu Naligator 2017-10-10 02:52:25

vous pouvez utiliser Github for Unity , un Unity Extension qui apporte le flux git dans L'UI D'Unity.

Github pour l'Unité vient de sortir la version 1.0 de l'extension.

1
répondu Kyle B 2018-06-22 12:36:25

Unity fournit également son propre contrôle de version Source. avant unity5 C'était unityAsset Server mais maintenant il s'est déprécié. et lancer un nouveau système de contrôle SVN appelé unity collaborate.mais le problème principal en utilisant unity et n'importe quel SVN est de commettre et de fusionner la scène . mais aucun de svn nous donne le moyen de résoudre ce genre de conflits ou de scène de fusion . dépend donc de vous avec quel SVN vous êtes familier . J'utilise L'outil SmartSVN sur Mac . et turtle aux fenêtres .

enter image description here

0
répondu Shahbaz Ali 2017-05-23 10:25:10

je préférerais que vous utilisiez BitBucket, car il n'est pas public et il y a un tutoriel officiel de Unity sur Bitbucket.

https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository

espérons que cette aide.

0
répondu Nipun David 2018-03-29 09:05:15

vient d'ajouter au sujet de Gitignore. La méthode recommandée ignore la bibliothèque et Temp, si sa racine wihtin de votre projet git. si vous êtes comme moi et avez parfois besoin d'un projet d'unité pour faire partie du repo, et non de l'ensemble du repo, les cordes correctes à gitignore seraient:

**/[Tt]emp
**/[Ll]ibrary
**/[Bb]uild
0
répondu zambari 2018-07-28 18:47:13