Jakie są najlepsze praktyki korzystania z kontroli źródła Git w Unity 3D, szczególnie w przypadku binarnego charakteru projektów Unity 3D? Proszę opisać przepływ pracy, jakie ścieżki będą zawarte w .gitignore, jakie ustawienia należy ustawić w Unity i / lub projekcie oraz wszelkie inne specjalne rzeczy, na które należy zwrócić uwagę.
Uwaga: Zdaję sobie sprawę, że korzystanie z Asset Server jest zalecanym przez Unity sposobem, ale chciałbym używać Git z różnych powodów. Proszę, nie udzielaj odpowiedzi, które twierdzą lub twierdzą, że powinienem po prostu użyć serwera zasobów. Serwer zasobów naprawdę nie jest dla mnie opcją.
git
unity3d
version-control
PressingOnAlways
źródło
źródło
Odpowiedzi:
Poniżej znajduje się fragment mojego osobistego bloga .
Korzystanie z Git w grach 3D
Aktualizacja z października 2015 r .: GitHub wydał wtyczkę Git o nazwie Git LFS, która bezpośrednio rozwiązuje poniższy problem. Teraz możesz łatwo i wydajnie wersjonować duże pliki binarne!
Git może dobrze działać z gotowymi grami 3D. Jednak głównym zastrzeżeniem jest to, że przechowywanie wersji dużych (> 5 MB) plików multimedialnych może stanowić problem w dłuższej perspektywie, ponieważ historia zatwierdzeń się powiększa. Ten potencjalny problem rozwiązaliśmy w naszych projektach, przechodząc do wersji zasobu binarnego tylko wtedy, gdy zostanie uznany za ostateczny. Nasi artyści 3D używają Dropbox do pracy nad zasobami WIP, zarówno z powyższego powodu, jak i dlatego, że jest on znacznie szybszy i prostszy (niewielu artystów będzie aktywnie chciało korzystać z Git!).
Git Workflow
Twój obieg pracy w Git jest czymś, co musisz sam zdecydować, biorąc pod uwagę własne doświadczenia jako zespół i sposób współpracy. Jednak. Zdecydowanie poleciłbym odpowiednio nazwaną metodologię Git Flow opisaną przez oryginalnego autora tutaj .
Nie będę się zbytnio zagłębiał w sposób, w jaki działa metodologia, ponieważ autor opisuje ją doskonale i w kilku słowach, aby łatwo było się z nią zapoznać. Od jakiegoś czasu korzystam z moim zespołem i jest to najlepszy przepływ pracy, jaki do tej pory próbowaliśmy.
Aplikacja kliencka Git GUI
Jest to naprawdę osobista preferencja, ponieważ istnieje wiele opcji w zakresie Git GUI lub tego, czy w ogóle używać GUI. Chciałbym jednak zasugerować bezpłatną aplikację SourceTree, ponieważ idealnie pasuje do rozszerzenia Git Flow. Przeczytaj samouczek SourceTree tutaj na temat wdrażania metodologii Git Flow w ich aplikacji.
Unity3D Ignoruj foldery
Aby pobrać aktualną wersję, Github utrzymał plik Unity.gitignore bez specyfikacji systemu operacyjnego.
Ustawienia Unity3D
W przypadku wersji Unity 3D v4.3 i nowszych:
External
opcję wUnity → Preferences → Packages → Repository
.Edit
menu i wybierzProject Settings → Editor
:Version Control Mode
naVisible Meta Files
.Asset Serialization Mode
naForce Text
.File
menu.Czy chcesz przenieść istniejące repozytorium do LFS?
Sprawdź mój post na blogu, aby dowiedzieć się, jak to zrobić tutaj .
Dodatkowa konfiguracja
Jedną z niewielu głównych niedogodności związanych z używaniem Git w projektach Unity3D jest to, że Git nie dba o katalogi i chętnie zostawia puste katalogi po usunięciu z nich plików. Unity3D utworzy pliki * .meta dla tych katalogów i może spowodować bitwę między członkami zespołu, gdy Git zobowiązuje się do dodawania i usuwania tych plików meta.
Dodaj ten zaczep Git po scaleniu do
/.git/hooks/
folderu dla repozytoriów z projektami Unity3D w nich. Po każdym ściągnięciu / scaleniu Git, sprawdzi, jakie pliki zostały usunięte, sprawdzi, czy katalog, w którym istniał, jest pusty, a jeśli tak, usuń go.źródło
Hidden Meta Files
?W Unity 4.3 trzeba było również włączyć opcję Zewnętrzną w preferencjach, ale od Unity 4.5 zrezygnowano z tej opcji, więc pełny proces instalacji wygląda następująco:
Visible Meta Files
naEditor → Project Settings → Editor → Version Control Mode
Force Text
naEditor → Project Settings → Editor → Asset Serialization Mode
File
menuRównież nasz zespół używa nieco bardziej rozszerzonego
.gitignore
pliku:Pamiętaj, że jedynymi folderami, które musisz zachować pod kontrolą źródła, są
Assets
iProjectSettings
.Więcej informacji o utrzymywaniu Projektu Unity pod kontrolą źródła można znaleźć w tym poście .
źródło
Hidden Meta Files
?Co to jest GIT?
Git to darmowy i rozproszony system kontroli wersji Open Source (SCM) opracowany przez Linusa Torvaldsa w 2005 roku (założyciel Linux OS). Został stworzony, aby kontrolować wszystko od małych do dużych projektów z szybkością i wydajnością. Wiodące firmy takie jak Google, Facebook, Microsoft codziennie korzystają z GIT.
Jeśli chcesz dowiedzieć się więcej o GIT, zapoznaj się z tym krótkim samouczkiem ,
Przede wszystkim upewnij się, że masz skonfigurowane środowisko Git. Musisz skonfigurować zarówno środowisko lokalne, jak i repozytorium Git (wolę Github.com).
Aplikacja kliencka GIT Mac / Windows
W przypadku aplikacji klienckiej GIT gui zaleciłem przejście na Github.com,
GitHub to miejsce do dzielenia się kodem z przyjaciółmi, współpracownikami, kolegami z klasy i kompletnymi nieznajomymi. Ponad pięć milionów osób korzysta z GitHub, aby wspólnie tworzyć niesamowite rzeczy.
Ustawienia Unity3d
Musisz wykonać te ustawienia
Przejdź do widocznych plików meta w menu Edycja → Ustawienia projektu → Edytor → Tryb kontroli wersji.
Włącz opcję Zewnętrzną w Unity → Preferencje → Pakiety → Repozytorium
Przełącz na Wymuś tekst w Edycja → Ustawienia projektu → Edytor → Tryb szeregowania zasobów.
Źródło: Korzystanie z Git z kontrolą gier 3D
źródło
Preferences > Packages
w Unity 5.x Normal? tyAby dodać do wszystkiego, co wspomniano, idealnie jest również używać git lfs z Unity. Używam tego, odkąd to wyszło i nie miałem z tym problemu.
Będziesz chciał dodać to
.gitattributes
do swojego.gitignore
plikuTo jest moja lista plików kroczących. Jeśli korzystasz z dodatkowych plików binarnych, których nie ma na liście, dodaj je.
Mam również pliki skonfigurowane do używania yamlmerge, trzeba by to skonfigurować. Możesz przeczytać o tym tutaj: http://docs.unity3d.com/Manual/SmartMerge.html
źródło
Mamy teraz bezproblemową integrację z jednością z rozszerzeniem Github do Unity ... https://unity.github.com/
Nowe rozszerzenie GitHub dla Unity przenosi 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 projekt jest w fazie alfa, ale nadal nadaje się do osobistych projektów.
źródło
Pomyślałem, że mogę napisać prostsze
.gitignore
dla każdego, kto jest zainteresowany:źródło
UnityPackageManager/
iPackages/
).Najważniejsze rzeczy do zapamiętania podczas używania git do kontroli wersji kodu źródłowego unity-3d:
(A) NIE melduj się w folderze Library . Popełniłem ten błąd wiele razy w przeszłości i cierpiałem z tego powodu! Usuń LUB przenieś folder biblioteki przed dodaniem projektu / plików do git.
(B) Użyj „Widocznych plików meta” - w przypadku najnowszych wersji jedności - 5.3.4 i nowszych dzieje się tak domyślnie. W przypadku niektórych wcześniejszych wersji należy zmienić ustawienia w: Edycja-> Ustawienia projektu-> Kontrola wersji
(C) Użyj pliku .gitignore dla Unity - aby upewnić się, że zdrowie psychiczne jest zachowane i że pliki nie zostaną niepotrzebnie dodane - jeśli na Androidzie / Tizen - dodaj reguły wykluczające dodawanie plików APK i TPK do repozytorium. Google szuka pliku .gitignore dla jedności LUB użyj tego modelu .gitignore dla Unity dostarczonego przez GitHub: https://github.com/github/gitignore/blob/master/Unity.gitignore
(D) Upewnij się, że plik .gitignore jest dodany do repozytorium jako pierwszy dodany plik - ponieważ w przeszłości osobiście brakowało mi dodania pliku .gitignore. Mam wiele przemyśleń z perspektywy czasu, dlaczego tak się stało - ale teraz po prostu kopiuję i dodam plik .gitignore jako pierwszy krok do skonfigurowania repozytorium.
Więc ... aby przygotować projekt Unity do git, wykonaj następujące czynności:
(1) Przejdź do folderu projektu
(2) Wpisz git init.
(3) Skopiuj plik .gitignore: w systemie MacOS: cp ~ / Downloads / .gitignore W systemie Windows: skopiuj c: \ Users [nazwa użytkownika] \ Downloads.gitignore.
(4) git dodaj .gitignore
(5) git add *
Mam nadzieję, że to pomoże ... wszystkiego najlepszego!
źródło
Edit -> Project Settings -> Editor
Ustaw Kontrola wersji na pliki meta. Ustaw Serializację zasobów, aby wymusić tekst.
Myślę, że tego właśnie chcesz.
źródło
Wolałbym używać BitBucket, ponieważ nie jest on publiczny, a oficjalny samouczek autorstwa Unity na Bitbucket.
https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository
mam nadzieję że to pomoże.
źródło
Możesz użyć Github dla Unity , rozszerzenia Unity, które wprowadza przepływ pracy git do interfejsu użytkownika Unity.
Github dla Unity właśnie wydał wersję 1.0 rozszerzenia.
źródło
Tylko foldery Zasoby i ProjectSettings muszą być pod kontrolą wersji git.
Możesz zrobić takiego gitignore.
źródło
Unity zapewnia również własną kontrolę wersji kodu źródłowego. przed unity5 był to unityAsset Server, ale teraz jest już nieaktualny. i uruchomić nowy system sterowania SVN o nazwie jedność współpracować. ale głównym problemem związanym z korzystaniem z jedności jest to, że dowolna SVN popełnia i scala scenę. ale Non of svn daje nam możliwość rozwiązania tego rodzaju konfliktów lub scalenia sceny. więc zależy od ciebie, z którym SVN znasz. Używam narzędzia SmartSVN na komputerze Mac. i żółwia w oknach.
źródło
Po prostu dodałem podstrumień Gitignore. Zalecany sposób ignoruje tylko Library i Temp, jeśli jest to katalog główny twojego projektu git. jeśli jesteś podobny do mnie i czasami potrzebujesz projektu jedności, który będzie częścią repozytorium, a nie całości repo, prawidłowe ciągi w gitignore będą:
źródło
Chciałem dodać bardzo prosty przepływ pracy od kogoś, kto był sfrustrowany gitem w przeszłości. Istnieje kilka sposobów korzystania z git, prawdopodobnie najbardziej popularne dla jedności to GitHub Desktop, Git Bash i GitHub Unity
https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069 .
Zasadniczo wszyscy robią to samo, ale wybór użytkownika. Możesz mieć git do konfiguracji dużych plików, który pozwala na 1 GB bezpłatnej pamięci dużych plików z dodatkową pamięcią dostępną w paczkach danych za 4 USD / mc za 50 GB, a to pozwoli ci przesyłać pliki> 100 MB do zdalnych repozytoriów (przechowuje rzeczywiste pliki na serwer i w twoim repozytorium wskaźnik)
https://git-lfs.github.com/
Jeśli nie chcesz konfigurować LFS z jakiegokolwiek powodu, możesz skanować projekty w poszukiwaniu plików> 128 MB w Windows, wpisując rozmiar: duży w katalogu, w którym masz projekt. Może to być przydatne do wyszukiwania dużych plików, chociaż mogą zostać pominięte niektóre pliki między 100 MB a 128 MB.
Ogólny format git bash to
git add. (dodaje pliki do zatwierdzenia)
git commit -m 'message' (zatwierdza pliki z komunikatem, nadal znajdują się na twoim komputerze, a nie w zdalnym repozytorium, w zasadzie zostały „wersjonowane” jako nowe zatwierdzenie)
git push (wypychaj pliki do repozytorium)
Wadą git bash dla projektów jedności jest to, że jeśli jest plik> 100mb, nie pojawi się błąd, dopóki go nie wypchniesz. Następnie musisz cofnąć zatwierdzenie, resetując głowę do poprzedniego zatwierdzenia. Trochę kłopotów, szczególnie jeśli jesteś nowy w git bash.
Zaletą GitHub Desktop jest to, że PRZED zatwierdzeniem plików o pojemności 100 MB wyświetli się komunikat o błędzie. Następnie możesz zmniejszyć te pliki lub dodać je do pliku .gitignore.
Aby użyć pliku .gitignore, utwórz plik o nazwie .gitignore w katalogu głównym repozytorium lokalnego. Po prostu dodaj pliki po jednym wierszu, który chcesz pominąć. Pliki SharedAssets i inne pliki folderów innych niż Asset można zwykle pominąć i automatycznie wypełnią się ponownie w edytorze (pakiety można ponownie zaimportować itp.). Możesz również użyć symboli wieloznacznych, aby wykluczyć typy plików.
Jeśli inne osoby używają Twojego repozytorium GitHub i chcesz sklonować lub pociągnąć, masz te opcje dostępne również na pulpicie GitHub lub Git Bash.
Nie wspominałem wiele o pakiecie Unity GitHub, w którym możesz używać GitHub w edytorze, ponieważ osobiście nie uważałem interfejsu za bardzo przydatny i nie sądzę, aby ogólnie pomógł każdemu zapoznać się z git, ale to tylko moja pierwszeństwo.
źródło