¿Cuáles son las mejores prácticas para usar el control de fuente de Git con Unity 3D, particularmente al tratar con la naturaleza binaria de los proyectos de Unity 3D? Describa el flujo de trabajo, qué rutas se incluirían en .gitignore, qué configuraciones deben establecerse en Unity y / o el proyecto, y cualquier otra cosa especial que deba tenerse en cuenta.
Nota: Me doy cuenta de que usar Asset Server es la forma recomendada por Unity, pero me gustaría usar Git por varias razones. Por favor, no hay respuestas que indiquen o argumentan que debería usar el servidor de activos. El servidor de activos realmente no es una opción para mí.
git
unity3d
version-control
PresionandoSiempre
fuente
fuente
Respuestas:
Lo siguiente es un extracto de mi blog personal .
Usando Git con juegos 3D
Actualización de octubre de 2015: desde entonces, GitHub lanzó un complemento para Git llamado Git LFS que trata directamente con el siguiente problema. ¡Ahora puede versionar archivos binarios grandes de manera fácil y eficiente!
Git puede funcionar bien con juegos 3D listos para usar. Sin embargo, la advertencia principal aquí es que versionar archivos multimedia de gran tamaño (> 5 MB) puede ser un problema a largo plazo a medida que su historial de confirmación se hincha. Hemos resuelto este problema potencial en nuestros proyectos solo versionando el activo binario cuando se considera final. Nuestros artistas 3D usan Dropbox para trabajar en recursos WIP, tanto por la razón anterior como porque es mucho más rápido y simple (¡no muchos artistas querrán usar Git de forma activa!).
Flujo de trabajo de Git
Tu flujo de trabajo de Git es algo que debes decidir por ti mismo dadas tus propias experiencias como equipo y cómo trabajas juntos. Sin embargo. Recomiendo encarecidamente la metodología de Git Flow apropiadamente nombrada como la describe el autor original aquí .
No entraré en demasiada profundidad aquí sobre cómo funciona la metodología, ya que el autor la describe perfectamente y en pocas palabras, por lo que es fácil de entender. He estado usando con mi equipo por un tiempo ahora, y es el mejor flujo de trabajo que hemos probado hasta ahora.
Aplicación de cliente Git GUI
Esto es realmente una preferencia personal aquí, ya que hay bastantes opciones en términos de Git GUI o si se debe usar una GUI. Pero me gustaría sugerir la aplicación gratuita SourceTree, ya que se conecta perfectamente con la extensión Git Flow. Lea el tutorial de SourceTree aquí sobre la implementación de la metodología Git Flow en su aplicación.
Unity3D ignora carpetas
Para una versión actualizada, Github mantuvo el archivo Unity.gitignore sin detalles del sistema operativo.
Configuración de Unity3D
Para versiones de Unity 3D v4.3 y posteriores:
External
opción enUnity → Preferences → Packages → Repository
.Edit
menú y seleccionaProject Settings → Editor
:Version Control Mode
aVisible Meta Files
.Asset Serialization Mode
aForce Text
.File
menú.¿Desea migrar su repositorio actual a LFS?
Mira mi publicación de blog para ver los pasos sobre cómo hacerlo aquí .
Configuracion adicional
Una de las pocas molestias principales que uno tiene al usar Git con proyectos de Unity3D es que a Git no le importan los directorios y felizmente dejará directorios vacíos después de eliminar archivos de ellos. Unity3D creará archivos * .meta para estos directorios y puede causar un poco de batalla entre los miembros del equipo cuando Git se compromete a seguir agregando y eliminando estos meta archivos.
Agregue este gancho posterior a la fusión de Git a la
/.git/hooks/
carpeta para repositorios con proyectos de Unity3D en ellos. Después de cualquier extracción / fusión de Git, verá qué archivos se han eliminado, verificará si el directorio en el que estaba está vacío y, de ser así, elimínelo.fuente
Hidden Meta Files
?En Unity 4.3 también tenía que habilitar la opción Externa desde las preferencias, pero desde Unity 4.5 descartaron la opción para eso, por lo que el proceso de configuración completo se ve así:
Visible Meta Files
enEditor → Project Settings → Editor → Version Control Mode
Force Text
enEditor → Project Settings → Editor → Asset Serialization Mode
File
menúAdemás, nuestro equipo está utilizando un
.gitignore
archivo un poco más extendido :Tenga en cuenta que las únicas carpetas que debe mantener bajo control de origen son
Assets
yProjectSettings
.Puede encontrar más información sobre cómo mantener Unity Project bajo control de fuente en esta publicación .
fuente
Hidden Meta Files
?¿Qué es el GIT?
Git es un sistema de control de versiones distribuido (SCM) gratuito y de código abierto desarrollado por Linus Torvalds en 2005 (fundador del sistema operativo Linux). Está creado para controlar todo de proyectos pequeños a grandes con rapidez y eficiencia. Compañías líderes como Google, Facebook y Microsoft usan GIT todos los días.
Si desea obtener más información sobre GIT, consulte este tutorial rápido ,
En primer lugar, asegúrese de tener configurado su entorno Git. Debe configurar su entorno local y un repositorio Git (prefiero Github.com).
Aplicación cliente GIT Mac / Windows
Para la aplicación de cliente GIT gui te recomendé ir con Github.com,
GitHub es el lugar para compartir código con amigos, compañeros de trabajo, compañeros de clase y completos extraños. Más de cinco millones de personas usan GitHub para construir cosas increíbles juntos.
Configuraciones de Unity3d
Necesitas hacer esta configuración
Cambie a Meta archivos visibles en Edición → Configuración del proyecto → Editor → Modo de control de versiones.
Habilite la opción externa en Unity → Preferencias → Paquetes → Repositorio
Cambie a Forzar texto en Edición → Configuración del proyecto → Editor → Modo de serialización de activos.
Fuente: Uso de Git con control de fuente de juegos 3D
fuente
Preferences > Packages
en Unity 5.x Normal? tyPara agregar a todo lo indicado, también es ideal usar git lfs con Unity. He estado usando esto desde que salió y no tuve problemas con él.
Querrás agregar esto al
.gitattributes
lado de tu.gitignore
archivoEsa es mi lista de archivos rodantes. Si utiliza archivos binarios adicionales que no figuran en la lista, agréguelos.
También tengo archivos configurados para usar yamlmerge, deberías configurar esto. Puede leer sobre esto aquí: http://docs.unity3d.com/Manual/SmartMerge.html
fuente
Ahora tenemos una integración perfecta a la unidad con la extensión Github to Unity ... https://unity.github.com/
La nueva extensión GitHub para Unity trae el flujo de trabajo de GitHub y más a Unity, brindando soporte para archivos grandes con Git LFS y bloqueo de archivos.
Al momento de escribir este proyecto, el proyecto está en alfa, pero aún se puede usar para proyectos personales.
fuente
Pensé que podría publicar una más simple
.gitignore
para cualquier persona interesada:fuente
UnityPackageManager/
yPackages/
).Lo principal que debe recordar al usar git para el control de versión del código fuente de unity-3d:
(A) NO registre la carpeta Biblioteca . ¡He cometido este error varias veces en el pasado y he sufrido por ello! Elimine O mueva la carpeta de la biblioteca antes de agregar su proyecto / archivos a git.
(B) Use "Visible Meta Files" - para las últimas versiones de Unity - 5.3.4 y superiores, esto sucede de manera predeterminada. Para algunas de las versiones anteriores, debe cambiar la configuración en: Editar-> Configuración del proyecto-> Control de versiones
(C) Use un archivo .gitignore para Unity, para asegurarse de que se mantenga la cordura y que los archivos no se agreguen innecesariamente , si está en Android / tizen, agregue reglas para excluir los archivos APK y TPK del repositorio. Busque en Google un archivo .gitignore para la unidad O use este modelo .gitignore para Unity proporcionado por GitHub: https://github.com/github/gitignore/blob/master/Unity.gitignore
(D) Asegúrese de que el archivo .gitignore se agregue al repositorio como el primer archivo agregado, porque en el pasado personalmente he extrañado agregar el archivo .gitignore. Tengo muchas reflexiones en retrospectiva sobre por qué sucedió esto, pero hoy en día solo copio y agrego el archivo .gitignore como primer paso para configurar el repositorio.
Entonces ... para preparar un proyecto de Unity para git, haga lo siguiente:
(1) Ir a la carpeta del proyecto
(2) Escriba git init.
(3) Copie el archivo .gitignore: en MacOS: cp ~ / Downloads / .gitignore En Windows: copie c: \ Users [su nombre de usuario] \ Downloads.gitignore.
(4) git agregar .gitignore
(5) git add *
Espero que esto ayude ... ¡todo lo mejor!
fuente
Edit -> Project Settings -> Editor
Establezca Control de versiones en meta archivos. Configure la serialización de activos para forzar el texto.
Creo que esto es lo que quieres.
fuente
Prefiero que uses BitBucket, ya que no es público y hay un tutorial oficial de Unity en Bitbucket.
https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository
espero que esto ayude.
fuente
Puede usar Github para Unity , una extensión de Unity que trae el flujo de trabajo de git a la interfaz de usuario de Unity.
Github for Unity acaba de lanzar la versión 1.0 de la extensión.
fuente
Solo las carpetas Assets y ProjectSettings deben estar bajo el control de versión de git.
Puedes hacer un gitignore como este.
fuente
Unity también proporciona su propio control de versión de origen. antes de unity5 era unityAsset Server pero ahora está depreciado. y lanzar un nuevo sistema de control SVN llamado unidad colaborar. pero el problema principal con la unidad y cualquier SVN es la escena de compromiso y fusión. pero Non of svn nos dan forma de resolver este tipo de conflictos o fusionar escena. así que depende de ti con qué SVN estás familiarizado. Estoy usando la herramienta SmartSVN en Mac. y tortuga en las ventanas.
fuente
Solo agregando sobre el tema de Gitignore. La forma recomendada solo ignora Library y Temp, si está en la raíz de su proyecto git. Si eres como yo y a veces necesitas un proyecto de unidad para ser parte del repositorio, no todo el repositorio, las cadenas correctas en gitignore serían:
fuente
Quería agregar un flujo de trabajo muy simple de alguien que ha estado frustrado con git en el pasado. Hay varias formas de usar git, probablemente las más comunes para la unidad son GitHub Desktop, Git Bash y GitHub Unity
https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069 .
Esencialmente, todos hacen lo mismo, pero es la elección del usuario. Puede tener git para la configuración de archivos grandes que permite 1GB de almacenamiento de archivos grandes gratis con almacenamiento adicional disponible en paquetes de datos por $ 4 / mes por 50GB, y esto le permitirá enviar archivos> 100mb a repositorios remotos (almacena los archivos reales en un servidor y en su repositorio un puntero)
https://git-lfs.github.com/
Si no desea configurar lfs por cualquier razón, puede escanear sus proyectos en busca de archivos> 128 mb en Windows escribiendo size: large en el directorio donde tiene su proyecto. Esto puede ser útil para buscar archivos grandes, aunque puede haber algunos archivos entre 100mb y 128mb que se pierdan.
El formato general de git bash es
git add. (agrega archivos para confirmar)
git commit -m 'mensaje' (confirma los archivos con un mensaje, todavía están en su PC y no en el repositorio remoto, básicamente han sido 'versionados' como una nueva confirmación)
git push (empujar archivos al repositorio)
La desventaja de git bash para proyectos de la unidad es que si hay un archivo> 100mb, no obtendrá un error hasta que presione. Luego debe deshacer su confirmación restableciendo su cabeza a la confirmación anterior. Una molestia, especialmente si eres nuevo con git bash.
La ventaja de GitHub Desktop es que ANTES de confirmar los archivos con 100mb, aparecerá un mensaje de error emergente. Luego puede reducir esos archivos o agregarlos a un archivo .gitignore.
Para usar un archivo .gitignore, cree un archivo llamado .gitignore en el directorio raíz del repositorio local. Simplemente agregue los archivos una línea a la vez que le gustaría omitir. SharedAssets y otros archivos de carpetas que no son de Asset generalmente se pueden omitir y se repoblarán automáticamente en el editor (los paquetes se pueden volver a importar, etc.). También puede usar comodines para excluir tipos de archivos.
Si otras personas están usando su repositorio de GitHub y desea clonar o extraer, también tiene esas opciones disponibles en el escritorio de GitHub o Git bash.
No mencioné mucho sobre el paquete Unity GitHub donde puedes usar GitHub en el editor porque personalmente no encontré la interfaz muy útil, y no creo que en general vaya a ayudar a nadie a familiarizarse con git, pero esto es solo mi preferencia.
fuente