Git for Unity 3D 소스 제어를 사용하는 방법은 무엇입니까?
특히 유니티 3D 프로젝트의 이진성을 처리할 때 유니티 3D와 함께 깃 소스 제어를 사용하는 모범 사례는 무엇입니까?워크플로우, .gitignore에 포함될 경로, Unity 및/또는 프로젝트에서 설정해야 할 설정 및 기타 특별한 사항에 대해 설명하십시오.
참고: Asset Server를 사용하는 것이 Unity에서 권장하는 방법이라는 것을 알고 있지만, 다양한 이유로 Git를 사용하고 싶습니다.해당 사항에 대한 답변이나 자산 서버를 사용해야 한다고 주장하지 마십시오.자산 서버는 제게 선택사항이 아닙니다.
Git를 3D 게임과 함께 사용하기
2015년 10월 업데이트: GitHub는 이후 아래 문제를 직접 처리하는 Git LFS라는 Git용 플러그인을 출시했습니다.이제 대용량 이진 파일을 쉽고 효율적으로 버전을 지정할 수 있습니다!
Git은 3D 게임을 즉시 사용할 수 있습니다.그러나 여기서 주의할 점은 커밋 기록이 부풀려지기 때문에 장기적으로 대용량(5MB 이상) 미디어 파일을 버전화하는 것이 문제가 될 수 있다는 것입니다.우리는 바이너리 자산이 최종적인 것으로 간주될 때만 버전을 지정하여 프로젝트에서 이 잠재적인 문제를 해결했습니다.NAT의 3D 아티스트는 위의 이유와 훨씬 빠르고 단순하기 때문에 Dropbox를 사용하여 WIP 자산을 작업합니다(Git!를 적극적으로 사용하려는 아티스트는 많지 않을 것입니다).
Git 워크플로우
Git 워크플로우는 팀으로서 자신의 경험과 함께 일하는 방법을 고려할 때 스스로 결정해야 할 사항입니다.하지만.여기에 원본 저자가 설명한 것처럼 적절한 이름의 Git Flow 방법론을 강력하게 추천합니다.
여기서는 방법론이 어떻게 작동하는지에 대해 너무 깊이 들어가지는 않겠습니다. 저자가 완벽하고 아주 적은 단어로 설명하기 때문에 쉽게 이해할 수 있습니다.저는 지금까지 팀과 함께 사용해 왔으며 지금까지 시도한 워크플로우 중 최고입니다.
Git GUI 클라이언트 응용 프로그램
Git GUI 또는 GUI를 사용할지 여부와 관련하여 상당히 많은 옵션이 있기 때문에 이것은 정말로 개인적인 선호입니다.그러나 Git Flow 확장과 완벽하게 연결되므로 무료 소스 트리 애플리케이션을 제안하고 싶습니다.응용 프로그램에서 Git Flow 방법론을 구현하는 방법에 대한 소스 트리 자습서를 읽으십시오.
Unity3D 폴더 무시
최신 버전의 체크아웃을 위해 Github은 OS 세부 사항 없이 Unity.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
Unity 3D 설정
Unity 3D v4.3 이상 버전의 경우:
- 에서 이 ) (v4.5 사용)
External
할 수 있습니다.Unity → Preferences → Packages → Repository
. - .
Edit
를 선택합니다.Project Settings → Editor
:- 스
Version Control Mode
Visible Meta Files
. - 스
Asset Serialization Mode
Force Text
.
- 스
- 및 저장하기 (scene(scene) 및트 위
File
메뉴판
기존 보고서를 LFS로 마이그레이션하시겠습니까?
여기서 수행하는 방법에 대한 단계를 보려면 블로그 게시물을 확인하십시오.
추가 구성
Unity3D 프로젝트에서 Git을 사용할 때 몇 가지 주요 문제 중 하나는 Git이 디렉터리에 관심이 없고 디렉터리에서 파일을 제거한 후에는 빈 디렉터리를 기꺼이 남겨둔다는 것입니다.Unity3D는 이러한 디렉토리에 *.meta 파일을 만들고 Git 커밋이 이러한 메타 파일을 계속 추가 및 제거할 때 팀 구성원 간에 약간의 다툼을 일으킬 수 있습니다.
이 Git 사후 병합 후크를 에 추가합니다./.git/hooks/
Unity3D 프로젝트가 있는 리포지토리의 폴더입니다.Git pull/merge 후에는 제거된 파일을 확인하고 디렉토리가 비어 있는지 확인한 후 삭제합니다.
Unity 4.3에서는 환경설정에서 외부 옵션을 활성화해야 했지만, Unity 4.5 이후에는 외부 옵션을 삭제했기 때문에 전체 설정 프로세스는 다음과 같습니다.
- 으로 전환
Visible Meta Files
Editor → Project Settings → Editor → Version Control Mode
- 으로 전환
Force Text
Editor → Project Settings → Editor → Asset Serialization Mode
- ()에서 씬) 및 저장
File
또한 우리 팀은 조금 더 확장된 기능을 사용하고 있습니다..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
소스 제어로 유지해야 하는 폴더는 다음과 같습니다.Assets
그리고.ProjectSettings
.
Unity Project를 소스 제어로 유지하는 것에 대한 자세한 내용은 이 게시물에서 찾을 수 있습니다.
GIT란 무엇입니까?
Git는 2005년에 리눅스 OS 설립자인 Linus Torvalds에 의해 개발된 자유 및 오픈 소스 분산 버전 제어 시스템(SCM)입니다.소규모 프로젝트에서 대규모 프로젝트에 이르기까지 모든 것을 신속하고 효율적으로 제어하기 위해 만들어졌습니다.구글, 페이스북, 마이크로소프트와 같은 선도적인 회사들은 매일 GIT를 사용합니다.
GIT에 대해 더 자세히 알고 싶다면 이 빠른 튜토리얼을 확인하십시오.
먼저 Git 환경이 설정되어 있는지 확인합니다.로컬 환경과 Git 저장소를 모두 설정해야 합니다(Github.com 을 선호합니다).
GIT 클라이언트 애플리케이션 Mac/Windows
GIT gui 클라이언트 애플리케이션의 경우 Github.com ,
깃허브는 친구들, 동료들, 반 친구들, 그리고 완전히 낯선 사람들과 코드를 공유하는 장소입니다.5백만 명 이상의 사람들이 GitHub을 사용하여 놀라운 것들을 함께 만듭니다.
Unity3d 설정
이 설정을 수행해야 합니다.
편집 → 프로젝트 설정 → 편집기 → 버전 제어 모드에서 표시 가능한 메타 파일로 전환합니다.
Unity → 기본 설정 → 패키지 → 리포지토리에서 외부 옵션 사용
편집 → 프로젝트 설정 → 편집기 → 자산 직렬화 모드에서 강제 텍스트로 전환합니다.
출처: Git With 3D Games 소스 컨트롤 사용
언급된 모든 것을 더하자면, 유니티와 함께 gitfs를 사용하는 것도 이상적입니다.저는 이것이 나온 이후로 계속 사용하고 있고 문제가 없었습니다.
은 이 내니다입용을 입니다..gitattributes
의 네에 .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
그것은 나의 롤링 파일 목록입니다.목록에 없는 추가 이진 파일을 사용하는 경우 추가합니다.
또한 yamlmerge를 사용하도록 구성된 파일이 있으므로 이를 설정해야 합니다.여기에서 그것에 대해 읽을 수 있습니다.
좀 더 간단한 글을 올릴까 해서요.gitignore
관심 있는 모든 사람을 위해:
# Ignore Everything
/*
# Except for these
!/.gitignore
!/Assets
!/Packages
!/ProjectSettings
이제 Github to Unity 확장 기능과 완벽하게 통합되었습니다.https://unity.github.com/
새로운 GitHub for Unity 확장 기능은 GitHub 워크플로우 등을 Unity에 제공하여 Git LFS 및 파일 잠금 기능이 있는 대용량 파일을 지원합니다.
작성 시점에서 프로젝트는 알파로 되어 있지만 개인 프로젝트에 사용할 수 있습니다.
unity-3d 소스 코드 버전 제어를 위해 git를 사용할 때 기억해야 할 주요 사항:
라이브러리 폴더를 체크인하지 마십시오.저는 과거에 이 실수를 여러 번 저질렀고 그로 인해 고통을 겪었습니다!git에 프로젝트/파일을 추가하기 전에 라이브러리 폴더를 삭제하거나 이동합니다.
최신 유니티 버전의 경우 "가시적 메타 파일" 사용 - 5.3.4 이상에서는 기본적으로 이 작업이 수행됩니다.일부 이전 버전의 경우 다음에서 설정을 변경해야 합니다.편집-> 프로젝트 설정-> 버전 제어
Unity용 .gitignore 파일 사용 - 안전성이 유지되고 파일이 불필요하게 추가되지 않는지 확인합니다(Android/tizen인 경우). APK 및 TPK 파일이 저장소에 추가되지 않도록 규칙을 추가합니다.unity를 위해 .gitignore 파일을 검색하거나 GitHub에서 제공하는 Unity를 위해 .gitignore 모델을 사용합니다. https://github.com/github/gitignore/blob/master/Unity.gitignore
.gitignore 파일이 처음 추가된 파일로 저장소에 추가되었는지 확인하십시오. 왜냐하면 과거에 개인적으로 .gitignore 파일을 추가하지 못했기 때문입니다.왜 이런 일이 일어났는지에 대해 많은 생각을 하고 있지만 요즘은 저장소를 설정하는 첫 번째 단계로 .gitignore 파일을 복사하고 추가합니다.
Unity 프로젝트를 git에 준비하려면 다음을 수행합니다.
프로젝트 폴더로 이동
git를 입력합니다.
.gitignore 파일을 복사합니다.MacOS의 경우: cp ~/다운로드/.gitignoreWindows의 경우: copy c:\Users[사용자 이름]\Downloads.gitignore.
git 추가 .gitignore
git add *
이게 도움이 되길...좋은 일만 가득하시길요!
비트버킷은 공개되지 않고 비트버킷에 대한 유니티의 공식 튜토리얼이 있기 때문에 비트버킷을 사용하는 것을 선호합니다.
https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository
이게 도움이 되길 바랍니다.
Edit -> Project Settings -> Editor
버전 제어를 메타 파일로 설정합니다.자산 일련화를 강제 텍스트로 설정합니다.
이게 당신이 원하는 것 같아요.
자산 및 프로젝트 설정 폴더만 Git 버전 제어를 받아야 합니다.
당신은 이렇게 무시할 수 있습니다.
[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/
GitHub for Unity는 Git 워크플로우를 Unity의 UI로 가져오는 Unity Extension입니다.
Github for Unity는 확장 버전 1.0을 출시했습니다.
- git-lfs(git 대용량 파일 지원)를 사용하여 대용량 자산을 적절하게 저장합니다.
- 다른 사람이 사용자의 자산 커밋을 덮어쓰지 않도록 파일 잠금
- 원격 저장소로 푸시 및 풀링
- Unity Asset Store에서 다운로드할 수도 있습니다. https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069
Unity 자체 소스 버전 제어도 제공합니다. unity5 이전에는 unityAssetServer였으나 지금은 평가절하되었습니다.그리고 유니티 콜라보라 불리는 새로운 SVN 제어 시스템을 출시합니다.하지만 유니티와 SVN을 사용하는 주요 문제는 장면을 커밋하고 병합하는 것입니다. 하지만 No of svn은 우리에게 이런 종류의 충돌이나 병합 장면을 해결할 수 있는 방법을 제공하지 않습니다. 그러니 당신이 어떤 SVN에 익숙한지에 달려있습니다. 저는 스마트를 사용하고 있습니다.Mac에서는 SVN 도구. 창에서는 거북이.
Gitignore의 서브젯에 추가하는 중입니다.권장되는 방법은 Git 프로젝트의 루트 내에 있는 경우에만 라이브러리와 온도를 무시합니다.만약 당신이 나와 같고 때때로 레포 전체가 아닌 레포의 일부가 되기 위해 유니티 프로젝트가 필요하다면, gitignore의 올바른 문자열은 다음과 같습니다.
**/[Tt]emp
**/[Ll]ibrary
**/[Bb]uild
플라스틱 SCM으로 전환할 것을 강력히 제안합니다.Unity는 이를 이전하고 디자이너 및 개발자 워크플로우를 제공하여 게임 개발과 같은 복잡한 작업에 대한 버전 제어를 관리합니다.
클라우드 에디션은 3명의 사용자에게 무료로 제공됩니다.Unity의 공동 작업 도구를 대체합니다.
참고: 간단한 프로젝트를 관리하기 위해 Git/Bitbucket과 SourceTree를 사용하는 데 어려움을 겪었습니다.
https://unity.com/products/plastic-scm
저는 과거에 기트에 좌절한 적이 있는 사람의 매우 간단한 워크플로우를 추가하고 싶었습니다.Git를 사용하는 방법은 여러 가지가 있으며, 가장 일반적인 통합 방법은 GitHub Desktop, GitBash 및 GitHub Unity일 것입니다.
https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069 .
기본적으로 사용자의 선택을 제외하고는 모두 동일한 작업을 수행합니다.대규모 파일 설정을 위해 Git을 사용할 수 있습니다. 1GB의 무료 대용량 파일 스토리지와 50GB의 4/mo 비용으로 데이터 팩에서 추가 스토리지를 사용할 수 있습니다. 그러면 100MB 이상의 파일을 원격 저장소에 푸시할 수 있습니다(서버 및 저장소 포인터에 실제 파일을 저장합니다).
어떤 이유로든 lfs를 설정하지 않으려면 size:large를 입력하여 창에서 128MB 이상의 파일을 프로젝트에서 검색할 수 있습니다.이것은 큰 파일을 검색하는 데 유용할 수 있지만 누락된 파일이 100mb에서 128mb 사이에 있을 수 있습니다.
gitbash의 일반적인 형식은 다음과 같습니다.
git add . (커밋할 파일 포함)
git commit -m 'message'(메시지로 파일을 삭제합니다. 파일은 원격 저장소가 아닌 PC에 여전히 있습니다. 기본적으로 새 커밋으로 '버전'되었습니다.)
git push(파일을 저장소에 저장)
유니티 프로젝트에서 gitbash의 단점은 100mb보다 큰 파일이 있으면 누르기 전까지 오류가 발생하지 않는다는 것입니다.그런 다음 머리를 이전 커밋으로 재설정하여 커밋을 실행 취소해야 합니다.특히 기트배시를 처음 접하는 분들은 좀 번거롭습니다.
GitHub Desktop의 장점은 100MB 파일을 커밋하기 전에 팝업 오류 메시지를 제공한다는 것입니다.그런 다음 이러한 파일을 축소하거나 .gitignore 파일에 추가할 수 있습니다.
.gitignore 파일을 사용하려면 로컬 리포지토리 루트 디렉터리에 .gitignore라는 파일을 만듭니다.생략할 파일을 한 번에 한 줄씩 추가하기만 하면 됩니다.공유 자산 및 기타 비자산 폴더 파일은 일반적으로 생략할 수 있으며 편집기에 자동으로 다시 채워집니다(패키지를 다시 가져올 수 있음).와일드카드를 사용하여 파일 형식을 제외할 수도 있습니다.
다른 사용자가 GitHub repo를 사용하고 있으며 복제하거나 풀링하려면 GitHub 데스크톱 또는 Gitbash에서도 이러한 옵션을 사용할 수 있습니다.
저는 개인적으로 인터페이스가 그리 유용하지 않다고 생각했기 때문에 편집기에서 GitHub을 사용할 수 있는 Unity GitHub 패키지에 대해 많이 언급하지 않았지만, 이것은 제가 선호하는 것일 뿐입니다.
자산 폴더(원래 유니티 프로젝트 안에 있는 다른 모든 파일)를 제외한 모든 항목이 포함된 .gitignore 파일을 만드는 것이 좋습니다.다음으로, 당신은 당신의 모든 게임 프로젝트를 하나의 폴더에 넣어야 합니다.그런 다음 게임의 모든 프로젝트 폴더에 .gitignore를 복제합니다.그러면 프로젝트 내의 라이브러리와 자산 이외의 불필요한 폴더가 제외됩니다.원하지 않는 프로젝트가 있으면 게임 프로젝트가 저장된 내부의 새 .gitignore에 넣습니다.참고: 여러 개의 .gitignore를 가질 수 있으며 .gitignore는 상대 경로를 기반으로 합니다.그게 도움이 되었기를 바랍니다!
나는 72시간 동안 게임 잼에서 내 친구와 이 접근법을 시도해 보았는데, 그들은 GIT를 알지 못했다는 것을 알아두시기 바랍니다.
먼저 미리 정의된 .gitignore unity tempate를 사용하여 [GitHub][1](개인 저장소는 이제 사용 가능)에 빈 저장소를 생성하면 다음과 같아야 합니다.
# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
#
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
[Bb]uild/
[Bb]uilds/
[Ll]ogs/
[Mm]emoryCaptures/
# Asset meta data should only be ignored when the corresponding asset is also ignored
!/[Aa]ssets/**/*.meta
# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*
# Autogenerated Jetbrains Rider plugin
[Aa]ssets/Plugins/Editor/JetBrains*
# Visual Studio cache directory
.vs/
# Gradle cache directory
.gradle/
# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db
# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta
# Unity3D generated file on crash reports
sysinfo.txt
# Builds
*.apk
*.unitypackage
# Crashlytics generated file
crashlytics-build.properties
그러면 제가 메인 씬을 만들었는데, 이 씬은 개발 중에 개인이 수정해서는 안 됩니다. 팀 내 모든 개발자와 아티스트가 게임의 최신 기능을 테스트하는 데모 씬이어야 합니다.무엇보다도, 새로운 기능은 메인 기능과 별도의 지점에 있어야 하며, 각 팀원은 테스트 및 개발에 사용하는 고유한 장면을 가지고 있습니다.모든 것이 잘 되면 그/그녀는 다른 멤버들에 의해 검토된 홍보를 만들었습니다.병합된 기능이 완료되면 다른 모든 구성원이 영향과 진행 상황을 볼 수 있도록 기본 장면에 기능을 추가합니다.
아트 파일은 스프라이트 파일의 변형으로 충돌을 피하고 메인 스프라이트를 PR의 완전히 새로운 조정된 것으로 교체하는 것이 좋습니다.: https://github.com/
만약 당신이 소스 제어를 사용한다면, 당신이 쓸모없는 파일들에 대해 약간의 무시를 가지고 있는지 확인하세요: https://github.com/github/gitignore/blob/main/Unity.gitignore
언급URL : https://stackoverflow.com/questions/18225126/how-to-use-git-for-unity3d-source-control
'source' 카테고리의 다른 글
Mongoose, CastError: 모델이 포함된 모델을 저장하려고 할 때 값에 대해 배열로 캐스트하지 못했습니다. (0) | 2023.05.02 |
---|---|
문자열이 Bash 스크립트의 정규식과 일치하는지 확인 (0) | 2023.05.02 |
Azure 테이블 스토리지 대 CosmosDB 테이블 API (0) | 2023.04.27 |
vba의 셸()을 사용하여 매개 변수로 .exe를 실행하는 방법은 무엇입니까? (0) | 2023.04.27 |
현재 ASP일 경우 어떻게 해야 합니까?NET 세션이 null입니까? (0) | 2023.04.27 |