본문 바로가기
기타/Git & GitHub

[Git] Git & GitHub의 기초 사용법과 협업 방식

by 거북이 코딩 2025. 2. 5.

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
    • 풀 리퀘스트