Git - 배경, 사용 준비

Yang HyunIl·2023년 2월 20일
0

Git

목록 보기
1/3
post-thumbnail

버전관리

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

• Configuration Management Systems
• Version Control Systems
• Source Data + History
• 협업, 작업추적, 복구 등이 가능

Git 등장 배경

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

버전관리 시스템의 종류

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

SVN
https://subversion.apache.org/
• 2000년대 만들어졌고, 현재까지 두루 사용 중

Git
https://git-scm.com/
• SVN 보다 빠른 속도와 많은 기능을 지원
• 현재 많은 기업이 사용 중

Git 기반의 서비스

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

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

Git 사용 준비

Global Username & Email

git config --global user.name <username>
git config --global user.email <email>

CRLF - WINDOWS

Windows - 가져올 때는 LF 를 CRLF 로 변경하고 보낼때는 CRLF 를 LF 로 변경

git config --global core.autocrlf true

참고 - Line ending

• Windows : CR (\r) + LF (\n)
• Unix or Mac : LF (\n)
• Windows 사용자와 Mac 사용자가 같은 Git Repository 를 작업할 때
코드에서 변경된 내용이 없어도 CRLF 차이로 인해 commit 이 발생할 수 있음

Editor

git config --global core.editor <editor>

전체 설정 확인

git config --list

항목별 설정 확인

git config <key>

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(or main branch)라고 함
  • 모든 branch는 최종적으로 다시 master branch에 merge(병합)되는 형식으로 진행 됨

Merge

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

0개의 댓글

관련 채용 정보