Git 01

조천룡·2023년 6월 21일
0

Git

목록 보기
1/3
post-thumbnail

버전관리

버전관리 시스템 (형상관리)

  • Configuration Management Systems
  • Version Control Systems

버전관리

  • Source Data + History
  • 협업, 작업추적, 복구 등이 가능

Git 등장 배경

  • Source Folder + 실행파일을 버전별로 카피하여 관리
  • 하루종일 개발한 코드가 컴퓨터가 다운 되면서 날아가버림..(멘붕)
    그래서 파일의 버전을 관리하려고 ...

Local Version Control Systems

  • 내컴퓨터에서버전관리가능→내컴퓨터하드가날아가면전체코드사라짐
  • 버전은 관리되지만, 협업은 여전히 어려움
    그래서 중앙에서 관리해보자 하여...

Centralized Version Control Systems

  • 협업이 가능해짐
  • commit 하는 순간 배포되어 다수에게 버그 유발 가능 (서버로 바로 commit)
  • 인터넷이 안되면 작업이 불가능
  • 자신만의 version history를 가질 수 없음
    그래서 개발되었다는

Distributed Version Control Systems

  • commit 하더라도 개인저장소 내에 적용됨 (다른 개발자에게 영향 없음)
  • 원하는 순간에 배포(Push) 가능
  • 오프라인에서도 작업 가능
  • 자신만의 version history를 가짐

버전관리 시스템의 종류

버전관리 시스템의 종류

  • CVCS - CVS, SVN, etc.,
  • DVCS - Mercurial, Git, etc.,

cvs

  • 1980년대 만들어진 형상관리 시스템
  • commit중오류발생시Rollback이되지않는등의문제
  • 이후 SVN 으로 대체됨

SVN

Git

Git 기반의 서비스

Github

  • https://github.com
  • Git을호스팅해주는웹서비스,협업을위한기능을제공 • 참고-소스코드보안이중요한경우사용을기피함

Gitlab

  • https://gitlab.com
  • 설치형 버전관리 시스템 - 소스코드 보안이 중요한 기업에서 주로 사용
  • 클라우드버전관리시스템-10명이하무료(Github와유사)
  • Issue tracker, Git Remote Repository, API, Team, Group 기능 제공

Installing on Mac

  • git --version
  • git config --global user.name *****
  • git config --global user.email *****
  • git config --global core.autocrlf input
  • git config --list

Git 기본 용어

Repository

  • 소스코드가 저장되어 있는 여러 개의 Branch 가 모여있는 디스크상의 물리적 공간
  • Local Repository 와 Remote Repository 로 구분

Checkout

  • 특정 시점이나 Branch 의 소스코드로 이동하는 것을 의미
  • Checkout 대상 - Branch, Commit, Tag
  • Checkout 을 통해 과거 여러 시점의 코드로 이동이 가능

Stage

  • 작업할 내용이 올라가는 임시저장영역
  • 이영역을이용하여작업한내용중commit에반영할파일만선별하여commit을수행할수있음

Commit

  • 작업할 내용을 Local Repository 에 저장하는 과정
  • 각각의 commit 은 의미있는 변경단위이고, 변경에 대한 설명을 commit log 로 남김
  • 권장 - commit 을 아끼지 마세요. (게임의 save point, 아끼면 똥됩니다.)
  • 참고 - commit 단위나 commit log format 을 정해놓은 회사나 팀도 있음 (빌드 서버를 사용하는 경우)

Tag

  • 임의의 commit 위치에 쉽게 찾아갈 수 있도록 붙여놓은 이정표
  • Tag 가 붙은 commit 은 commit id (version) 대신 tag name 으로 쉽게 checkout 가능

Push

  • Local Repository 의 내용 중, Remote Repository 에 반영되지 않은 commit 을 Remote Repository 로 보내는 과정
  • 권장-Push하는순간다른개발자들도영향을받음. 검증되지않은코드는Push하지않도록함.

Pull

  • Remote Repository 에 있는 내용 중, Local Repository 에 반영되지 않은 내용을 가져와서 Local Repository 에 저장하는 과정
  • 다른 팀원이 변경하고 Push 한 내용을 Local Repository 에 가져올 수 있음
  • 참고 : Push 과정에서 Conflict (충돌)이 일어나서 Push 가 거절된 경우, Pull 을 통해 Remote Repository 의 변경 내용을 Local Repository 에 반영하여 Conflict 를 해결 한뒤 다시 Push 를 시도해야 함.

Branch

  • 특정 시점 (commit 단위) 에서 분기하여 새로운 commit 을 쌓을수 있는 가지를 만드는 것
  • 개발의 주축이 되는 branch 를 master branch (혹은 main branch) 라고 함
  • 모든 branch 는 최종적으로 다시 master branch 에 merge (병합) 되는 형식으로 진행 됨

Merge

  • Branch 의 반대개념으로 하나의 Branch 를 다른 Branch 와 합치는 과정
  • Merge 되는 두 Branch 는 주종관계가 성립. 예 - dev branch 를 main branch 에 merge
  • Merge 되는 과정에서 Confict (충돌) 이 발생하는 경우 Diff 를 수정하여 Conflict 를 해결한 뒤 Merge 를 진행 할 수 있음
profile
10√2 Data

0개의 댓글

관련 채용 정보