수색…


Unity와 함께 Git Large File Storage (LFS) 사용하기

머리말

Git은 비디오 게임 개발을 즉시 사용할 수 있습니다. 그러나 주된주의 사항은 커밋 히스토리가 커짐에 따라 큰 (> 5 MB) 버전의 미디어 파일을 버전 관리하는 것이 문제가 될 수 있다는 것입니다. Git은 원래 바이너리 파일 버전 관리를 위해 제작되지 않았습니다.

좋은 소식은 2015 년 중반부터 GitHub이 Git LFS 라는 플러그인을 출시하여이 문제를 직접 처리한다는 것입니다. 이제 쉽고 효율적으로 대형 바이너리 파일을 버전화할 수 있습니다!

마지막으로,이 문서는 Git의 삶이 비디오 게임 개발에 잘 작동하도록하기 위해 필요한 특정 요구 사항과 정보에 중점을 둡니다. 이 가이드에서는 Git 자체를 사용하는 방법에 대해서는 다루지 않습니다.

Git & Git-LFS 설치하기

개발자는 여러 가지 옵션을 사용할 수 있습니다. 첫 번째 방법은 핵심 Git 명령 줄을 설치할지 또는 널리 사용되는 Git GUI 응용 프로그램을 사용할지 결정하는 것입니다.

옵션 1 : Git GUI 응용 프로그램 사용

Git GUI 나 GUI 사용 여부에 대한 몇 가지 옵션이 있기 때문에 이것은 실제로 개인적인 취향입니다. 선택할 수있는 응용 프로그램이 많습니다. 인기있는 응용 프로그램은 다음과 같습니다.

선택한 응용 프로그램을 설치했으면 google을 실행하고 Git-LFS에 대한 설정 방법을 확인하십시오. 이 안내서의이 단계는 응용 프로그램에 따라 다르므로 생략하겠습니다.

옵션 2 : Git & Git-LFS 설치

이것은 매우 간단합니다 - Install Git . 그때. Git LFS를 설치하십시오 .

프로젝트에 큰 파일 저장 공간 구성

Git LFS 플러그인을 사용하여 이진 파일을 더 잘 지원한다면 Git LFS에서 관리 할 파일 유형을 설정해야합니다. Unity 프로젝트에서 사용되는 일반적인 바이너리 파일을 지원하기 위해 저장소의 루트에있는 .gitattributes 파일에 아래를 추가하십시오 :

# Image formats:
*.tga filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text

# Audio formats:
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aiff filter=lfs diff=lfs merge=lfs -text

# 3D model formats:
*.fbx filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text

# Unity formats:
*.sbsar filter=lfs diff=lfs merge=lfs -text
*.unity filter=lfs diff=lfs merge=lfs -text

# Other binary formats
*.dll filter=lfs diff=lfs merge=lfs -text

Unity를위한 Git 저장소 설정하기

Unity 개발을 위해 Git 저장소를 초기화 할 때 수행해야 할 몇 가지 작업이 있습니다.

Unity는 폴더를 무시합니다.

저장소의 모든 버전을 버전 관리해야하는 것은 아닙니다. 아래 템플릿을 저장소의 루트에있는 .gitignore 파일에 추가 할 수 있습니다. 또는 GitHub 에서 오픈 소스 Unity.gitignore를 확인하고 gitignore.io를 사용하여 하나를 생성 할 수도 있습니다 .

# Unity Generated
[Tt]emp/
[Ll]ibrary/
[Oo]bj/

# Unity3D Generated File On Crash Reports
sysinfo.txt

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

# OS Generated
desktop.ini
.DS_Store
.DS_Store?
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

.gitignore 파일을 설정하는 방법에 대해 자세히 알아 보려면 여기를 확인하십시오 .

Unity 프로젝트 설정

기본적으로 Unity 프로젝트는 버전 관리를 올바르게 지원하도록 설정되지 않습니다.

  1. (v4.5 이상에서이 단계 생략) Unity → Preferences → Packages → Repository 에서 External 옵션을 활성화하십시오.
  2. Edit → Project Settings → Editor → Version Control Mode 에서 Visible Meta Files 로 전환 Edit → Project Settings → Editor → Version Control Mode .
  3. Edit → Project Settings → Editor → Asset Serialization Mode 에서 Force Text 로 전환 Edit → Project Settings → Editor → Asset Serialization Mode .
  4. File 메뉴에서 장면과 프로젝트를 저장하십시오.

추가 구성

Git을 Unity 프로젝트와 함께 사용하는 몇 가지 주요한 성가심 중 하나는 Git이 디렉토리를 신경 쓰지 않고 파일을 삭제 한 후 빈 디렉토리를 행복하게 남겨 둘 것입니다. Unity는 이러한 디렉토리에 *.meta 파일을 만들 것이며, Git이 이러한 메타 파일을 계속 추가하고 제거하면 팀 구성원간에 약간의 전투가 발생할 수 있습니다.

이 Git post-merge 훅 을 Unity 프로젝트가있는 리포지토리의 /.git/hooks/ 폴더에 추가하십시오 . Git 풀 / 병합 후에 어떤 파일이 제거되었는지 확인하고, 존재하는 디렉토리가 비어 있는지 확인한 다음 삭제하십시오.

병합되는 장면과 프리 팹

Unity로 작업 할 때 공통적 인 문제는 2 명 이상의 개발자가 Unity Scene 또는 프리 패브 (* .unity 파일)를 수정하는 경우입니다. 힘내라는 상자에서 제대로 병합하는 법을 모른다. 고맙게도 Unity 팀은 간단한 병합을 자동으로 만드는 SmartMerge 라는 도구를 배포했습니다. 가장 먼저해야 할 일은 .git 또는 .gitconfig 파일에 다음 행을 추가하는 것입니다 (Windows : %USERPROFILE%\.gitconfig , Linux / Mac OS X : ~/.gitconfig ).

[merge]
tool = unityyamlmerge

[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"

Windows 에서 UnityYAMLMerge의 경로는 다음과 같습니다.

C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe

또는

C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe

그리고 MacOSX에서 :

/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge

이 작업이 완료되면 병합 / 리베이스 중에 충돌이 발생할 때 사용할 수 있습니다. git mergetool 수동으로 실행하여 UnityYAMLMerge를 트리거하는 것을 잊지 마십시오.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow