Git

Brogod97·2022년 12월 7일
0

KH TIL

목록 보기
3/37
post-thumbnail

2. 형상 관리 시스템_Git

(Software) Configuration Management System

즉, 형상 관리 시스템이란, 소프트웨어의 변경사항을 체계적으로 추적, 통제 하는 것을 말함

  • GUI: 그래픽 사용자 인터페이스
  • CLI: 커맨드 라인 인터페이스
  • 소스트리: GIT을 유저 친화적이게 만든 것

GIt의 장점

  1. 불필요한 파일을 생성하지 않아도 됨
    여러 버전을 위해 중복되는 파일을 생성하지 않아도 됨
  2. Git을 이용해 여러 개발자와 협업이 용이해 짐
    각 개발자마다 수정한 내역을 확인할 수 있음

Git은 이렇게 소프트웨어를 항상 확인하는데, 이를 클라우드 서비스로 제공해주는게 깃허브임

  • Push: 깃허브에 코드 업로드
  • Pull: 깃허브에서 코드 다운로드

형상 관리란?

형상 관리

  • 소프트웨어의 변경 사항을 체계적으로 추적하고 통제하는 것
    간혹 면접에서 형상관리의 정의 또는 관련 질문이 올 수 있다고 하니 참고!

형상 관리 시스템 (Git)

  • 개발 중 발생하는 모든 산출물들이 변경됨으로써 점차 변해가는 소프트웨어 형상을 체계적으로 관리하고 유지하는 시스템

  • 개발 산출물들의 버전 관리와 변경 내역 조회 가능.

  • Git이 형상관리 시스템임
    GIt을 클라우드 서비스로 제공하는 게 GIthub임
    SVN을 사용하는 경우도 있음
    → git이 더 복잡하지만 체계적이고, 안정적임

  • 브랜치: 협업에 사용하거나, 한가지 버전에서 다른 버전으로 만들 때 사용하는 것

Git

  • 대표적인 형상 관리 툴

  • 프로젝트(소스 코드)를 저장하고 이력을 관리하는 저장소(repository)

  • 원하는 시점에 소스 코드를 저장하거나 저장 지점으로 돌아가는 기능을 제공하여 프로젝트의 버전을 관리할 수 있음.
    → Git 사용의 대표적 이유

  • 여러 PC에 소스 코드를 저장시키거나 여러 PC에서 작성한 내용을 하나로 병합(merge)하는 것이 가능함.


GitHub

GitHub Link

  • 코드 저장소 Git을 웹으로 이용할 수 있게 만든 원격 저장소(remote repository)
    → 원격 저장소의 유일한 툴은 아님

  • 인터넷이 제공 되는 환경에서 소스 코드의 공유 및 버전 관리가 가능.

  • 여러 개발자가 하나의 원격 저장소에 있는 소스 코드를 받거나 변경한 코드를 병합하는 것이 가능
    → 협업 가능


저장소(Repository) 종류와 관련 용어

  1. Working Directory : 작업이 진행되는 폴더
    • 프로젝트 폴더를 의미하며, 소스코드 변경 후 git add(그냥 save, ctrl + s) 시 Staging Area로 전달됨
    • Local Repository에 저장된 소스코드를 현재 프로젝트에 병합(merge) 가능

  2. Staging Area : 준비 영역, 중간 영역
    • 변경된 코드가 Local Repository에 저장하기 전 머무르는 중간 영역
    • Local Repository에 저장될 코드를 선택하고 commit을 통해 저장할 수 있음

  3. Local Repository :  내 PC 내에 있는 저장소
    • 소스 코드의 추가/변경 사항을 기록하는 저장소
    • Local Repository에 저장된 내용은 Remote Repository에 push를 반영할 수 있음
    • Remote Repository에 저장된 소스 코드를 fetch를 통해 얻어와 Local Repository에 저장 가능

  4. Remote Repository
    • 원격 저장소 (GitHub)
  • fetch + merge = pull

로컬 저장소에서 원격 저장소에 올리는 과정

  1. 업로드 할 파일 생성

  2. 저장을 누르는 순간 Git의 Stage에 올라감

    • stage: Local repository에 올리기 전 대기하는 장소
      commit을 해야 로컬 저장소로 올라감
  3. 로컬 저장소에서 push하면 원격 저장소로 올라감


원격 저장소에서 가져오는 과정

  1. 깃허브에서 fetch를 한 뒤 로컬 업데이트 사항을 확인함

  2. merge를 통해 확인 된 업데이트를 가져와 적용함

  3. 위 1,2번 과정을 pull을 통해 한번에 할 수 있음


Branch

  • branch : 나뭇가지, 분기, 갈라지다
  • 하나의 저장소(Repository) 내에 여러 버전을 만들어 작업할 수 있는 방법
  • 독립적으로 작업을 진행하기 위해 저장소를 분리하는 개념
  • 협업 진행 시 원본(master branch) 코드를 각자 분리된 작업 영역(branch)으로 가져가 서로 다른 작업을 진행
  • 각자 branch로 가져간 코드는 변경되어도 원본에 영향을 미치지 않음
  • 코드가 변경된 branch의 내용을 master branch에 적용해달라는 요청(Pull Request)을 보낼 수 있음
  • 요청이 받아 들여지면 master branch에 변경한 코드 내용이 병합됨

0개의 댓글