Git
- 버전 컨트롤 형성 관리 프로그램
- 리눅스 기반
- 파일 변경 이력을 기록 및 추적
GitHub
- 원격 저장소를 저장하는 웹 서비스
Repository
- 파일을 저장하는 공간
- 로컬 레포지토리: 지역 저장소, 자신의 컴퓨터에 저장
- 리모트 레포지토리: 원격 저장소, 다른 서버에 저장
로컬 공간
- working directory
- 직접적으로 작업중인 프로젝트 폴더
- git add 를 통해 staging area로 보냄
- staging area
- 저장할 대상을 임시로 보관하는 영역
- git commit을 통해 repository로 보냄
- repository
- 변경 이력을 기록하는 영역
핵심 명령어
- git add
- git add FILENAME
- git add . : 현재 상태 추가
- git commit
- git commit -m “MESSAGE”
- git init: Git으로 초기화 하여 현재 폴더의 repository를 만듬
- 현재폴더: working directory
- .git: repository
- git status: 현재 상태 확인
- git log: 작업 로그 확인
- git log —oneline
- git log —oneline —all
- git checkout HASH: 이전 상태를 확인
- git checkout master: 마스터 브랜치로 이동
리눅스 명령어
- pwd: 현재 위치 출력
- ls: 현재 위치의 파일목록 출력
- ls -al: 모든 파일을 상세 출력
- whoami: 로그인 유저명 출력
- mkdir FILENAME: FILENAME이라는 폴더를 생성
- cd FILENAME: FILENAME으로 현재 위치를 변경
- .은 현재위치를 의미, ..은 상위 디렉토리를 의미
- touch FILENAME: FILENAME이라는 빈 파일 생성
- exit: 터미널 종료
- code .: vscode를 실행
- echo “MESSAGE”: MESSAGE 출력
- echo “MESSAGE” >> FILENAME: FILENAME에 MESSAGE를 저장
- cat FILENAME: FILENAME 내용 출력
Git 초기 설정
- Git bash 열기
- git config —global user.name NAME: 유저네임을 NAME으로 설정
- git config —global user.email EMAIL: 유저이메일을 EMAIL로 설정
- git config —list: 설정 확인
- q를 눌러 편집상태를 종료
vscode
- Ctrl + `: 터미널 열기
- 터미널을 Git bash로 변경
Unity
- git init: 프로젝트 파일 Git으로 초기화
- curl GITIGNOREURL >> .gitignore
- .gitignore파일 생성 후 커밋
작업 되돌리기
- Git reset
- Git reset —soft HASH: 커밋을 안한 상태로 되돌림 (staging area)
- Git reset —mixed HASH: staging area의 내용까지 내림 (변경사항은 유지됨)
- Git reset —hard HEAD^: 이전 커밋상태로 되돌림 (working directory까지 변경됨)
GitHub
- New Repository 생성
- git remote add origin GITHUBURL
- git remote -v: 현재 등록된 원격 저장소 확인
- git push origin master: master 브랜치에 push
LFS
- git lfs install
- git lfs track
- git lfs track “*.mov”: 모든 .mov파일 추적
- .gitattributes 파일 생성됨 add 후 커밋
- dd if=/dev/zero of-game.mov count=1 bs=101M
- 대용량 더미파일 생성
- git push origin master
- 100MB 이상의 파일이 정상적으로 업로드됨
branch
- git branch: 브랜치 확인
- git branch BRANCHNAME: 브랜치 생성
- git checkout BRANCHNAME: 현재 브랜치 변경
- git merge BRANCHNAME: 다른 브랜치를 머지
merge 충돌
- 같은 부분을 수정한 브랜치끼리 머지할 경우 충돌이 발생함
- 소스 제어에서 직접 브랜치를 수정하고 선택
- git add, commit 다시 진행
- master: 항상 배포 가능한 안정적인 코드
- develop: 개발중인 작업을 통합하는 곳으로 새로운 기능이나 버그수정을 테스트하는 브랜치
- feature 브랜치를 만들어 새로운 기능을 개발하고 완성되면 develop 브랜치로 병합한다.
- 배포가 준비되면 release 브랜치로 병합하고 마지막으로 master 브랜치에 병합한다.
- hotfix: 긴급한 버그수정을 위해 사용 develop과 master 브랜치에 모두 병합
Git으로 협업하기
- 원격 마스터: 원격 디벨롭의 내용을 풀 리퀘스트 받음
- 원격 디벨롭: 로컬 디벨롭의 내용을 푸시받음
- 로컬 디벨롭: 원격 디벨롭을 받은 상태에서 개발자 브랜치를 머지
- 로컬 개발자: 실제 개발하는 영역
초기 세팅
- 팀장
- 프로젝트 생성, git init, git ignore, attributes, lfs 설정.
- 원격 레포 생성 후 연결
- 세팅 - 콜라보레이터 - 팀원추가
- 로컬 브랜치 설정
- git checkout -b develop
- git branch --delete master
- git checkout -b dev/DEVELOPER
- 원격 브랜치 설정
- code - bracnch - develop브랜치 생성
- 팀원
- 프로젝트 파일 생성
- 레포 주소 복사
- git bash에서 프로젝트 파일로 이동
- git clone --branch develop GITHUBURL
- cd REPOSITORY
- git checkout -b dev/DEVELOPER
- unity hub에서 add - 프로젝트 열기
- 작업과정
- 팀원이 수정한 내용을 원격 develop에서 pull
- git pull origin develop
- git checkout dev/개발자
- git merge develop
- dev/개발자 브랜치에서 작업
- 작업 후 develop개발자에서 dev/개발자 브랜치를 머지
- git push origin develop
- 풀 리퀘스트
- 팀원이 수정한 내용을 원격 develop에서 pull
'기타 > Git & GitHub' 카테고리의 다른 글
[Git] 진행 중인 프로젝트 또는 대용량 파일이 포함된 프로젝트를 GitHub에 업로드하기 (0) | 2025.03.06 |
---|