Git

Jungmin·2022년 11월 14일
1

Git

목록 보기
1/6

⏹ Git

버전관리

  • 소스 데이터 + History
  • 협업, 작업추적, 복구 등이 가능

버전관리 시스템

- CMS (configuration Management System)
- VCS (Version Control Systems)

버전관리 시스템 종류

  • CVCS (Centralized Version Control Systems)
    - CVS, SVN 등
    • 협업이 가능해짐
    • commit하는 순간 배포되어 다수에게 버그유발 가능
    • 인터넷 연결 필요
    • 자신만의 version history 가질 수 없음
  • DVCS (Distributed Version Control Systems)
    - Mercurial, Git 등
    • commit하더라도 개인 저장소 내에 적용 (다른 개발자에게 영향 없음)
    • 원하는 순간 push(배포) 가능
    • 오프라인 작업 가능
    • 자신만의 version history 가짐

Git

: SVN보다 빠른 속도와 다양한 기능 지원, 대부분의 기업에서 SVN 혹은 Git 사용 중

Github

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

⏹ Git Global Configuration

: 컴퓨터 내 사용할 git의 global 설정값 (기본설정)

git config --global user.name <username>
git config --global user.email <email>
💡윈도우 사용자는 CRLF를 LF로 변경해주어야 한다. (line ending때문)
git config --global core.autocrlf true
editor 설정 (기본적으로 vim)
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

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

Commit

  • 작업할 내용을 local repository에 저장하는 과정
  • 각각 commit은 의미있는 변경단위이고, 변경에 대한 설명을 commit log로 남김

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과정에서 충돌이 일어나 push가 거절된 경우, pull을 통해 remote repository 변경내용을 local repository에 반영하여 충돌 해결한 후에 다시 push 시도해야 함.

Branch

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

Merge

  • branch와 반대 개념으로 하나의 branch를 다른 branch와 합치는 과정
  • Merge되는 두 branch는 주종관계가 성립 (ex) dev branch를 main branch에 merge)
  • Merge되는 과정에서 충돌 발생하는 경우, Diff를 수정하여 해결한 뒤 merge 진행할 수 있음.
profile
데이터분석 스터디노트🧐✍️

0개의 댓글