Jak używać Git do kontroli źródeł Unity3D?
Jakie są najlepsze praktyki używania Git kontroli źródeł w Unity 3D, szczególnie w radzeniu sobie z binarną naturą projektów Unity 3D? Proszę opisać przepływ pracy, jakie Ścieżki zostaną uwzględnione .gitignore, jakie ustawienia należy ustawić w Unity i / lub projekcie, i wszelkie inne specjalne rzeczy, które należy zauważyć.
Uwaga: zdaję sobie sprawę, że korzystanie z Asset Server jest sposobem zalecanym przez Unity, ale chciałbym używać Gita z różnych powodów. Proszę żadnych odpowiedzi ten stan lub argumentować, że powinienem po prostu korzystać z serwera aktywów. Serwer zasobów naprawdę nie jest dla mnie opcją.
13 answers
poniżej znajduje się fragment mojego osobistego bloga .
Używanie Gita z grami 3D
Aktualizacja Październik 2015: GitHub od tego czasu wydała wtyczkę dla Git o nazwie Git LFS , która bezpośrednio rozwiązuje poniższy problem. Teraz możesz łatwo i efektywnie wersję dużych plików binarnych!
Git może działać dobrze z grami 3D po wyjęciu z pudełka. Jednak głównym zastrzeżeniem jest to, że wersjonowanie dużych (>5 MB) plików multimedialnych może być problemem długoterminowe, jak twoja historia commit wzdęcia. Rozwiązaliśmy ten potencjalny problem w naszych projektach poprzez wersjonowanie zasobu binarnego tylko wtedy, gdy zostanie on uznany za ostateczny. Nasi artyści 3D używają Dropbox do pracy nad aktywami WIP , zarówno z powyższego powodu, jak i dlatego, że jest to dużo szybsze i prostsze (niewielu artystów będzie aktywnie chciało używać Gita!).
Git Workflow
Twój przepływ pracy w Git jest czymś, o czym musisz sam decydować, biorąc pod uwagę swój własny doświadczenie w pracy zespołowej i sposób współpracy. Jednak. Zdecydowanie polecam odpowiednio nazwaną metodologię Git Flow opisaną przez autora .
Nie będę wnikał zbyt głęboko w to, jak działa metodologia, ponieważ autor opisuje ją doskonale iw kilku słowach zbyt, więc łatwo jest przejść. Używam z moim zespołem od jakiegoś czasu i jest to najlepszy przepływ pracy, jaki do tej pory próbowaliśmy.
Klient Git GUI Zastosowanie
Jest to tak naprawdę osobiste preferencje, ponieważ istnieje sporo opcji pod względem GUI Git lub czy w ogóle używać GUI. Ale chciałbym zasugerować darmową aplikację SourceTree , ponieważ idealnie pasuje do rozszerzenia Git Flow. Przeczytaj SourceTree tutorial tutaj {[14] } na temat implementacji metodologii Git Flow w ich aplikacji.
Unity3D Ignoruj Foldery
Dla aktualizacji wersji Github utrzymany Jedność.plik gitignore BEZ specyfiki systemu operacyjnego.
# =============== #
# 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
Dla wersji Unity 3D v4. 3 i nowszych:
- (pomiń ten krok w wersji 4.5 i wyższej) Włącz opcję
External
wUnity → Preferences → Packages → Repository
. - Otwórz menu
Edit
i wybierzProject Settings → Editor
:- Przełącz
Version Control Mode
naVisible Meta Files
. - Przełącz
Asset Serialization Mode
naForce Text
.
- Przełącz
- Zapisz scenę i projekt z menu
File
.
Chcesz przenieść istniejący repo do LFS?
Sprawdź z mojego posta na blogu dla kroków , jak to zrobić tutaj .
Dodatkowa Konfiguracja
Jedną z kilku głównych irytacji, jaką ma używanie Gita w projektach Unity3D, jest to, że Git nie dba o katalogi i chętnie pozostawi puste katalogi po usunięciu z nich plików. Unity3D zrobi*.pliki meta dla tych katalogów i może spowodować bitewę między członkami zespołu, gdy Git commity dodać i usunąć te meta pliki.
Dodaj ten Git Post-merge hook do folderu /.git/hooks/
dla repozytoriów z projektami Unity3D. Po każdym Git pull/merge, sprawdzi, jakie pliki zostały usunięte, sprawdzi, czy katalog, w którym istniał, jest pusty, a jeśli tak, usuń go.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-29 11:03:01
W Unity 4.3 trzeba było również włączyć opcję zewnętrzną z preferencji, ale od Unity 4.5 zrezygnowano z tej opcji, więc pełny proces konfiguracji wygląda następująco:
- Przełącz na
Visible Meta Files
wEditor → Project Settings → Editor → Version Control Mode
- Przełącz na
Force Text
wEditor → Project Settings → Editor → Asset Serialization Mode
- Zapisz scenę i projekt z menu
File
Również nasz zespół używa nieco bardziej rozbudowanego pliku .gitignore
:
# =============== #
# 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
Zauważ, że jedynymi folderami, które musisz zachować pod kontrolą źródła, są Assets
i ProjectSettings
.
Więcej informacje na temat utrzymywania projektu Unity pod kontrolą źródłową można znaleźć w ten post.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-20 18:56:55
Co to jest GIT?
Git to darmowy i open source rozproszony system kontroli wersji (SCM) opracowany przez Linusa Torvaldsa w 2005 roku (założyciela systemu Linux). Jest on stworzony, aby kontrolować wszystko rom małych i dużych projektów z prędkością i wydajnością. Wiodące firmy takie jak Google, Facebook, Microsoft używają Gita na co dzień.
Jeśli chcesz dowiedzieć się więcej o GIT sprawdź ten szybki tutorial ,
Przede wszystkim upewnij się, że masz skonfigurowane środowisko Gita.Musisz skonfigurować zarówno lokalne środowisko, jak i repozytorium Git (wolę Github.com).
Aplikacja kliencka GIT Mac / Windows
Dla aplikacji klienckiej GIT gui poleciłem Ci Github.com,
GitHub to miejsce do dzielenia się kodem ze znajomymi,współpracownikami, kolegami z klasy i zupełnie obcymi. Ponad pięć milionów ludzi korzysta z Githuba, aby wspólnie budować niesamowite rzeczy.
Unity3d settings
Musisz wykonać te ustawienia
Przełącz na widoczny Meta Files in Edit → Project Settings → Editor → Version Control Mode.
Włącz opcję zewnętrzną w Unity → Preferencje → Pakiety → repozytorium
Przełącz na wymuszanie tekstu w trybie Edycja → Ustawienia projektu → edytor → tryb serializacji zasobów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-09 19:44:46
Aby dodać do wszystkiego, co zostało powiedziane, idealnie nadaje się również do użycia git lfs z Unity. Używam tego, odkąd wyszedł i nie miał żadnych problemów.
Będziesz chciał to dodać .gitattributes next to your .plik gitignore
*.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
To moja lista plików. Jeśli używasz dodatkowych plików binarnych, a nie List, dodaj je.
Mam również pliki skonfigurowane do korzystania z yamlmerge, trzeba by to skonfigurować. Możesz o tym przeczytać tutaj: http://docs.unity3d.com/Manual/SmartMerge.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-02 17:42:17
Pomyślałem, że mogę zamieścić prostszy .gitignore
dla każdego, kto jest zainteresowany:
# Ignore Everything
/*
# Except for these:
!/.gitignore
!/Assets
!/ProjectSettings
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-25 20:11:40
Mamy teraz bezproblemową integrację z unity z rozszerzeniem Github to Unity... https://unity.github.com/
Nowe rozszerzenie GitHub dla Unity wprowadza przepływ pracy GitHub i więcej do Unity, zapewniając obsługę dużych plików z Git LFS i blokowaniem plików.
W momencie pisania projektu jest w wersji alfa, ale nadal nadaje się do projektów osobistych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-26 15:11:04
Edit -> Project Settings -> Editor
Ustaw kontrolę wersji na pliki meta. Ustaw serializację zasobów na wymuszanie tekstu.
Myślę, że tego właśnie chcesz.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-28 17:03:22
Tylko foldery Assets i ProjectSettings muszą być pod kontrolą wersji git.
Możesz zrobić takie gitignore.[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/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-03 08:39:56
Najważniejsze rzeczy do zapamiętania podczas używania git dla unity-Kontrola wersji kodu źródłowego 3D:
(A) NIE NALEŻY sprawdzać folderu biblioteki . Popełniłem ten błąd wiele razy w przeszłości i cierpiałem za to! Usuń lub przenieś folder biblioteki przed dodaniem projektu / plików do git.
(B) użyj "Visible Meta Files" - dla najnowszych wersji unity - 5.3.4 i nowszych to się dzieje domyślnie. W przypadku niektórych wcześniejszych wersji należy zmienić ustawienia pod: Edycja - > Ustawienia Projektu - > Kontrola Wersji
(C) używać a .plik gitignore dla Unity - aby upewnić się, że sanity jest utrzymywany i pliki nie są niepotrzebnie dodawane - jeśli na Androidzie / tizen-dodaj reguły, aby wykluczyć pliki APK i TPK z dodawania do repozytorium. Google around for a .plik gitignore dla unity lub użyj tego modelu .gitignore for Unity provided by GitHub: https://github.com/github/gitignore/blob/master/Unity.gitignore
(D) Dokonać jasne .plik gitignore jest dodawany do repozytorium jako pierwszy dodany plik-bo w przeszłości osobiście brakowało mi dodawania .plik gitignore. mam wiele przemyśleń z perspektywy czasu na temat tego, dlaczego tak się stało - ale obecnie po prostu kopiuję i dodaję .plik gitignore jako pierwszy krok konfiguracji repozytorium.
Więc... aby przygotować projekt Unity na Gita, wykonaj następujące czynności:
(1) Przejdź do folderu projektu
(2) Typ git init .
(3) Kopiuj .plik gitignore: Na MacOS: cp ~ / Downloads/.gitignore W systemie Windows: Kopiuj c:\Users [yourusername] \ Downloads.gitignore .
(4) git add .gitignore
(5) git add *
Mam nadzieję, że to pomoże... wszystkiego najlepszego!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-10 02:52:25
Możesz użyć Github dla Unity, Rozszerzenia Unity, które wprowadza przepływ pracy git do interfejsu Unity.
Github dla Unity właśnie wydał wersję 1.0 rozszerzenia.
- używa git-lfs (Git large file support) do prawidłowego przechowywania dużych zasobów
- blokowanie plików tak, aby nikt inny nie nadpisywał Twoich zatwierdzeń aktywów
- Push and Pull to / from any remote repozytorium
- można go również pobrać w zasobie Unity Sklep: https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-22 12:36:25
Unity zapewnia również własną kontrolę wersji źródłowej. przed unity5 był to unityAsset Server, ale teraz został zdeprecjonowany. i uruchomić nowy system sterowania SVN o nazwie unity collaborate.ale głównym problemem przy użyciu unity i dowolnego SVN jest zatwierdzanie i scalanie sceny . ale brak svn daje nam sposób na rozwiązanie tego rodzaju konfliktów lub scalić scenę . więc zależy od Ciebie, z którym SVN jesteś zaznajomiony . Używam narzędzia SmartSVN na Macu . i żółw na oknach .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:25:10
Wolałbym, abyś używał BitBucket, ponieważ nie jest on publiczny i istnieje oficjalny samouczek Unity Na Bitbucket.
Https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository
Mam nadzieję, że to pomoże.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-29 09:05:15
Dodaję do tematu Gitignore. Zalecany sposób ignoruje bibliotekę i Temp tylko wtedy, gdy jest to główny element Twojego projektu git. jeśli jesteś podobny do mnie i czasami potrzebujesz unity project, aby być częścią repo, a nie całego repo, poprawnymi ciągami w gitignore będą: {]}
**/[Tt]emp
**/[Ll]ibrary
**/[Bb]uild
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-28 18:47:13