1. github을 통해 리포지토리 만들기
- github에서 new를 통해서 새로운 리포지토리를 만들어주면 된다.
- 언리얼 엔진 프로젝트이기 때문에, gitignore를 언리얼 엔진을 추가해주면 된다.
- 참고로 readme file이 없으면 가끔 특정 GUI 기반 git 프로그램에서 오류가 날 수도 있기에 넣어주는 것이 좋다.

- 이후, 리포지토리를 깃허브데스크탑을 통해서 clone하면 된다.
추가) gitignore에 라이더 관련 파일을 없애주기 위해 예외를 추가하는 것이 좋다.
# Jetbrain Rider specific files
.idea/
2. Git LFS 설정
clone을 한 폴더에서 Git Bash를 통해 LFS 세팅을 해주면 된다.
- 우클릭을 통해 Open Git Bash here

- 콘솔 창에 git lfs install을 누르고 아래와 같은 문구가 나오면 된다.

3. gitattributes
관리할 파일을 저장하는 세팅이다. 여기서 지정한 파일들이 LFS로 관리되게 된다.
- 위의 설정에서 열었던 git bash를 열고,
- 아래의 명령어를 통해 gitattributes에 파일을 추가할 수 있다.
git lfs track "*.uasset"
git lfs track "*.umap"
- 미리 만들어져 있는 gitattributes를 사용해도 된다.
- 메모장에 작성하고, 이름만 .gitattributes로 바꿔서 추가하면 된다
[attr]lock filter=lfs diff=lfs merge=binary -text lockable
[attr]lockonly lockable
[attr]lfs filter=lfs diff=lfs merge=binary -text
[attr]lfstext filter=lfs diff=lfstext merge=lfstext -text
# Unreal Engine file types.
*.uasset lock
*.umap lock
*.locres lfs
*.locmeta lfs
# Steam Audio files
*.phononscene lfs
*.probebox lfs
*.probebatch lfs
*.bakedsources lfs
# Binaries
*.exe lfs
*.dll lfs
*.rcc lfs
# FMOD
*.bank lfs
*.wav lfs
*.mp3 lfs
*.ogg lfs
*.flac lfs
# Icons
*.png lfs
*.ico lfs
*.icns lfs
# Movies
*.bk2 lfs
4. 언리얼 프로젝트 추가
테스트를 위해 C++언리얼 프로젝트를 만든 후 추가해 보았다.
- 원하는 위치에 언리얼 프로젝트를 만든 후, 폴더 내부로 들어가서 해당 파일들을 복사해 온다.
- 아래 사진의 파일을 모두 복사

- 우리가 만든 깃리포지토리를 저장하는 폴더 안으로 넣어주면 된다.
- 아래와 같은 모습이 된다.

- 이렇게 한 이유는 gitattribute와 gitignore가 언리얼 프로젝트 폴더 안(source나 content 폴더 등)에 있어야 하기 때문이다.
5. 파일 추가
위에서 gitattributes로 관리한 파일인 umap 파일을 하나 추가해서 push를 하면 아래와 같이 lfs 처리가 된 것을 볼 수 있다.

- lfs 처리를 하지 않은 경우

- lfs 처리를 한 경우

참고) 필요한 파일을 다운받는 경우
- 해당 파일들은 git LFS가 적용된 저장소를 클론할 때
- 브랜치를 변경하거나, 특정 커밋을 체크아웃할 때
- 헤드에서 LFS 파일을 사용할 때
6. 파일 잠금
여러 팀원들이 같은 파일을 수정시 충돌이 발생할 수 있는데, 외부 플러그인을 사용하여 파일 잠금을 할 수 있다.
(공유하고자 하는 깃 리포지토리는 팀원을 초대해서 Collaborators에 추가해야 한다.)
6 - 1. 플러그인 다운로드
- 해당 링크(https://github.com/ProjectBorealis/UEGitPlugin/releases/tag/3.16)를 통해 zip파일을 다운로드 후
- 깃 리포지토리 폴더 안에 Plugins 라는 폴더에 넣어주면 된다. (Plugins 폴더가 없는 경우 만들어주기)

6 - 2. Config 세팅
- 해당 Config 세팅을 가진 Config 폴더 안에 추가해 주어야 한다.
- 세팅
- 기존에 있던 ini 파일을 복사해서, 내용을 아래 적어둔 것으로 바꾼 후
- DefaultEditorPerProjectUserSettings 로 이름을 바꿔준다.
[/Script/UnrealEd.EditorLoadingSavingSettings]
bSCCAutoAddNewFiles=False
bAutomaticallyCheckoutOnAssetModification=True
bPromptForCheckoutOnAssetModification=False

6 - 3. 언리얼 세팅
- 플러그인을 추가하면, 언리얼 Rebuild를 수행한 후 언리얼을 실행한다.
- 툴 -> 리비전 컨트롤에 연결 -> Git LFS 2 선택

- 아래와 같은 창에서 맨 마지막 Uses Git LFS에는 github의 user name을 쓰면된다. (깃허브 주소 뒤에 써있는 이름)

- 이후, 에셋을 새롭게 만들었다면 ? 표시가 뜨게 되고

- 우클릭 -> 리비전 컨트롤 -> 새로 고침 클릭 -> 체크아웃 클릭

- 커밋을 수행하면, 아래와 같이 체크 표시로 바뀌게 되고 다른 사람들이 수정할 수 없도록 바뀐다.

- 수정할 수 없도록 잠긴 모습
