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

Configuration Management Systems
Version Control Systems

버젼관리 = Source Data + History

  • 협업, 작업추적, 복구 등이 가능

버젼관리 시스템 종류
중앙관리형 : CVS, SVN
분산관리형 : Mercurial, Git
*대부분 SVN이나 git 사용중

Git 기반 서비스

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

Gitlab = 설치형 버전관리 시스템 - 소스코드 보안이 중요한 기업에서 주로 사용
= 클라우드 버전관리 시스템 - 깃헙과 유사
= Issue tracker, Git Remote Repository, API, Team, Group 기능 제공

윈도우 설치법

깃배쉬 관리자 권한으로 실행하는 것이 좋음

Github 가입

https://github.com/ 가입

Git Global Configuration

깃허브 아이디 글로벌 설정하기

참고 -line ending(줄바꿈문자)
윈도우는 CR(\r) + LF(\n), 맥은 LF(\n)으로 다름
윈도우 사용자와 맥 사용자가 같은 git Repository를 작업할 때, 코드에서 변경된 내용이 없어도 CRLF 차이로 인해 commit이 발생할 수 있음
윈도우 사용자는 가져올 때 LF를 CRLF로 변경하고, 보낼때 CRLF를 LF로 변경

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을 아끼지 말자
  • 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에 가져올 수 잇음
  • push 과정에서 충돌이 일어나 push가 거절된 경우,
    pull을 통해 remote의 변경내용을 local에 반영하여 충돌을 해결한 뒤 다시 push 시도

Branch

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

Merge

  • Branch의 반대개념으로, 하나의 Branch를 다른 Branch와 합치는 과정
  • Merge 되는 두 Branch는 주종관계가 성립
  • Merge 되는 과정에서 충돌이 발생하는 경우, Diff를 수정하여 충돌 해결 한뒤 Merge 진행
profile
데이터분석 공부 시작했습니다

0개의 댓글