본캠프가 시작되었다. Git에 관한 특강 내용에 더해 따로 공부한 내용을 작성해보겠다.
Git과 GitHub 사용법 기초 정리오늘은 Git과 GitHub 사용법에 대해 배웠다.
처음 접하는 사람도 이해할 수 있도록 간단하게 정리해본다.
Git = 버전 컨트롤 시스템
개발을 하다 보면 코드가 점점 복잡해지고, 여러 명이 동시에 작업하게 되면서 버전 관리가 정말 중요해진다.
Git은 이런 상황에서 굉장히 유용하다.
GitHub는 Git을 온라인에서 관리할 수 있게 도와주는 플랫폼이다.
내 Git 저장소(Repository)를 클라우드에 올려서 여러 사람과 협업하거나, 백업하거나, 포트폴리오로 활용할 수 있다.
GitHub에서 새 저장소를 만들 때는 다음 순서를 따른다:
.gitignore, README.md 선택 여부 결정.gitignore 파일은 Git이 무시해야 할 파일 목록을 적어놓는 곳이다.
예를 들면:
.env)예: Unity 프로젝트에서는
/Library,/Temp,.vs,.idea등을 무시 처리
Branch는 기능 개발을 독립적으로 할 수 있게 해주는 갈래(branch)이다.
main 브랜치를 건드리지 않고 실험하거나 새로운 기능을 개발할 때 사용한다.
main: 안정적인 배포용 브랜치feature/login: 로그인 기능 개발용 브랜치bugfix/header: 헤더 버그 수정용 브랜치작업이 끝나면 다시
main브랜치로 Merge한다.
GitHub Desktop은 Git 명령어를 GUI(그래픽 인터페이스)로 쉽게 사용할 수 있게 도와주는 프로그램이다.
git clone으로 복사git add, git commit, git pushgit checkout -b feature/my-featuregit branchgit checkout maingit branch -d feature/my-feature본격적으로 팀 프로젝트를 시작했다. 미니 프로젝트 주제는 4주차에 진행했던 카드 뒤집기 게임과 같지만, 기능을 몇가지 추가한 프로젝트이다. 다같이 와이어프레임을 짜고, 이에 맞춰서 역할분담을 했다. 나는 그 중 card와 관련된 전반을 맡기로 했다. 팀장이 GitHub를 통해서 공유한 Unity 프로젝트를 팀원들이 각자 받은 후, 각자 맡은 기능을 각자의 Branch에서 작업하였다.
지금까지 배웠던 내용들을 복습해보는 느낌이라 그리 어렵진 않았다. 각자의 사진들을 가지고 Resources를 만들었는데, 이전에 수업에선 정해진 규격의 이미지를 사용해서 수월했지만, 각각 다른 크기의 이미지들을 정해진 규격으로 만드는 데에 약간의 시간이 소요되었다. 팀원들 중 몇명은 스크립트를 통한 해결책을 제시하였지만, 그 경우 비율이 제각각일 것을 우려해서 이미지 편집 프로그램을 통해 손수 수정하였다.
카드의 뒷면엔 버튼을 만들어서 뒤집는 기능을 만들었다. 뒤집을 때와 Idle 상태일 때의 애니메이션을 만들었고, 이를 컨트롤하는 컨트롤러를 만들며 프리팹 생성이 끝났다.
오늘까지 만든 스크립트 Card.cs의 내용은 다음과 같다.
public class Card : MonoBehaviour
{
public int idx = 0;
public GameObject front;
public GameObject back;
public Animator anim;
public void OpenCard()
{
anim.SetBool("isOpen", true);
front.SetActive(true);
back.SetActive(false);
}
public SpriteRenderer frontImage;
public void setting(int number)
{
idx = number;
frontImage.sprite = Resources.Load<Sprite>($"card{idx}");
}
}
idx 변수를 선언하고, 그 변수에 따라 카드에 들어갈 이미지를 앞면에 넣어준다.isOpen 불리언 변수가 true일 때, 앞면을 보여주고, false일 때 뒷면을 보여준다.다만 팀원들과 가장 난관을 겪었던 건 바로 GitHub사용에 관한 것이었다. 우리가 겪은 문제 상황은 다음과 같았다.
GitHub를 실제 사용하기 전엔 파일을 주고받지 않고도 쉽게 협업할 수 있고, 버전을 올리거나 복구할 때도 쉽게 할 수 있어서 굉장히 간편한 시스템이라고 생각했는데, 실제로 GitHub를 사용해보니, 사용자 간 충돌 문제가 굉장히 빈번하게 일어난다는 사실을 깨달았다.
충돌문제를 해결하기 위한 방법을 구글링해보니, 다음과 같은 해결책을 제시했다.
Scene, 프리팹(.prefab), 애니메이션 컨트롤러(.controller) 같은 파일은 충돌이 자주 난다.Scene이나 프리팹을 담당하도록 분리하거나,UI 등은 Prefab Variant나 나누어진 Prefab으로 쪼개서 관리해야 한다.Edit > Project Settings > Editor 에서 아래 항목 변경Asset Serialization → Force TextVersion Control → Visible Meta Files.meta 파일이 생기고, Git에서 파일 추적 및 충돌 해결이 쉬워진다.내일부터 위 내용을 팀원들과 공유하고, Merge Conflict가 최대한 발생하지 않도록 해야 작업 속도나 효율도 증가할 것 같다.