GitHub|Git

깃허브 특강 정리

테크러너 2024. 4. 17.

깃허브 특강

깃은 무엇인가?

팀프로젝트를 할 때 작업물을 공유하는 상황이 빈번합니다.

공유하는 과정에서 여러 문제점들이 발생합니다.

 

문제1 : A가 작업물 일부를 빠뜨리고 공유할 수 있음

문제2 : 전달 받은 사람들이 제대로 적용을 못할 수 있음

문제3 : D작업물을 먼저 적용하고 A작업물을 나중에 적용할 수도 있음

 

 

 

그래서 이런 작업물들을 최대한 문제없이 공유하며 협업할 수 있는 것이 Git입니다.

 

로컬 저장소의 작업물들을 원격 저장소에 저장하게 됩니다.

 

업로드시 작업물만 하는것이 아니라 메모도 같이 올립니다.

다른 사람들은 메모도 같이 다운받게 됩니다.

메모지를 통해 다른 사람들이 어떤 작업을 했는지 구분이 가능합니다.

 

그런데 이런 저장소를 두고도 문제가 발생합니다.

A가 필요없는 기능을 삭제하고 업로드를 했고, D는 그 기능을 수정해서 사용할 수 있게 바꿨습니다.

그럼 결국 A는 삭제를 한거고, D는 수정을 한 상태입니다.

이럴 경우 한쪽의 작업물이 날아갑니다.

 

A가 먼저 올렸다면 삭제된게 부활해서 D가 올라가고,

D가 먼저 올리고 A가 이후에 올렸다면 D의 작업물은 삭제되니 문제가 발생합니다.

 

 

그래서 이렇게 저장소를 여러개 두어 저장소의 구조화를 합니다.

자식 저장소들의 작업이 끝나면 부모 저장소로 합쳐지게 되는 것이 반복됩니다.

이 모든 과정들이 Git에 반영됩니다.

 

 

깃 용어 정리

Commit : 로컬저장소에서 본인 작업물을 메모하는 기록 단계

History : 버전 변경 기록 열람

Push : 로컬저장소에서 원격저장소로 업로드

Pull : 원격저장소에서 로컬저장소로 다운로드

Branch : 하나의 저장소

Merge : 자식 브랜치에서 부모 브랜치로 합치는 과정

 

 

버전이란?

Git은 버전 관리 시스템이다.

깃을 사용하면 히스토리를 가지고 있기 때문에 어떤 상태로든 이동하는 것이 가능하다.

 

 

깃허브 데스크탑 사용법

로컬 저장소와 원격 저장소 연결하기

Git 은 명령어 공부할 것이 많고, 실수할 가능성이 높다.

 

그래서 여러 보조 프로그램들이 등장한다.

그 중 깃허브 데스크탑은 ui를 도입했고, 깃의 내용을 보기 좋게 만들었다.

 

깃허브 데스크탑을 사용하려면 우선 원격 리포지토리를 생성 후 로컬 저장소와 연결해주어야 한다.

방법 1 : 유니티 프로젝트를 생성하고, 프로젝트 폴더안의 파일들을 원격 리포지토리에 연결된 폴더에 넣어준다.

 

방법 2 : 유니티 프로젝트가 있는 폴더의 경로와 폴더명을 깃허브 데스크탑에 입력하여 원격 리포지토리를 생성한다.

 

방법 3 : 깃 사이트에서 리포지토리를 만든 후 클론하여 가져온다.

 

 

gitignore 파일(중요!!)

유니티 프로젝트에서 Assets, Package, ProjectSettings 폴더만 있으면 된다.

나머지 폴더들은 유니티가 실행될 때 자동으로 채워진다.

 

이중 Library 파일은 작업을 진행할 수록 점점 파일의 용량이 커져간다.

그런데 깃허브로 작업물을 공유하다보니 파일이 커지면 다운로드받을 때마다 너무 오래 걸립니다..

 

그래서 이런 파일들을 무시하고 중요 파일들만 공유될 수 있도록 하는 것이 gitignore 파일입니다.

 

gititgnore 파일을 메모장으로 열어본 이미지입니다.

Library temp 등등의 파일들이 적혀있습니다. 이 파일들은 무시하고 다운로드,업로드 됩니다.

 

 

Histroy - Amend, Undo, Revert

Amend : 커밋했던 내용을 수정해서 다시 설정(커밋 자체 삭제)

Undo : 커밋한 내용 취소

Revert : Amend처럼 커밋을 삭제함. 차이점은 Revert 했다는 커밋을 남김

 

 

Changes - Discard, Stash

  • discard all changes : 다 지움
  • stash : 임시 저장
    • restore : 다시 들어옴
    • discard : 삭제됨

 

 

브랜치 안전하게 합치기

1. merge를 하기 전에 부모 브랜치로 이동해서 변경점이 있나 확인
2. 변경점이 있다면, 자신의 브랜치로 되돌와서 부모브랜치를 merge를 함
3. 이 작업이 끝나면 부모 브랜치로 이동해서 비로소 자신의 브랜치를 머지해줌

 

 

 

충돌 발생 원인/회피 방법

같은 스크립트의 같은 라인을 서로 다르게 수정한 경우

충돌이 무조건 발생합니다.

결국 두가지 스크립트 중에 어떤걸 선택할지 고를 수 있습니다. 한쪽의 작성코드는 당연히 날아갑니다.

 

코드가 겹쳐서 발생한 충돌을 막기 위해서는 최대한 역할 분담을 확실히해서 겹치지 않게 합니다.

 

유니티는 코드뿐만 아니라 Scene이라는 개념도 존재하기 때문에 Scene 작업도 역할을 분배하는 것이 좋습니다.

 

 

대규칙 ! !

하나의 파일을 여러명이 동시에 작업하지 말 것

 

 

Scene에 작업할 게 많아서 혼자 전부 만들 수가 없는 경우 해결법

동적 생성입니다.

보통 Hierarchy창에 오브젝트들을 미리 배치하고 작업하는데요.

 프리팹화 시킨 후 코드를 통해 게임이 실행될 때 생성되도록 합니다.

 

 

깃 플로우 전략

보통 기업에서 위와같은 형태로 브랜치도 많이 나누고, 커밋도 잘해야합니다.

feature : 기능 브랜치
develop : 기능 브랜치 병합
release : 배포
hot fixes : 긴급 수정 순간적으로 만들어주고 합침
master : 안쓰는 경우도 가끔 있음, 대버전이 바뀔 때 마다 전체를 넣어줌

 

간단하게는 위와 같이 깃플로우를 설정할 수 있습니다.

 

 

깃 컨벤션

팀 프로젝트하기 전에 위와 같이 브랜치, 머지 규칙을 정해두고 시작하면 좋습니다.

 

반응형

댓글