버전관리 및 Git의 특징

Weed·2024년 2월 13일
0

기록되지 않은 아이디어는 실행되지도 않는다. 이는 기록의 중요성을 함축적으로 표현
이에 나온 것이 버전 관리다. 소스코드 관리를 위하여 팀 단위로 개발 중인 소스 코드나, 청사진 같은 설계도 등의 디지털 문서를 관리한다.
버전을 통해서 시간적으로 변경사항과 작업자를 추적

버전 관리의 필요성

  1. 자료의 백업 및 복구
  2. 개정 내용 파악
  3. 변경 내용 추적
  4. 작업자 추적
  5. 개정 작업
  6. 병합 작업
  7. 협업에 의한 통합

클라이언트-서버 모델

  1. 클라이언트-서버 모델은 서버에서 저장소를 관리하고 클라이언트는 저장소의 일부분만 가져다가 작업하는 형태
  2. 서버에서 저장소의 모든 파일을 관리하고 처리
  3. 서버와 클라이언트가 항상 연결되어 있어야 정상적인 작업을 수행하며 연결이 되어 있지 않으면 작업에 제한이 있음

분산 모델

  1. 분산 모델은 클라이언트에서 서버와 동일한 독립적인 저장소를 가지고 작업하는 형태
  2. 클라이언트에서 서버의 저장소에 대한 동일한 정보를 가지고 있으므로 서버와 연결이 되어 있지 않아도 작업을 처리할 수 있음

Git이란?

  1. 2005년 리눅스 커널 개발자인 리누스 토발즈가 개발
  2. Git은 소프트웨어 개발에서 버전 관리를 위한 도구
  3. Git은 분산 버전 관리 시스템
  4. 개별 작업자가 중앙화된 코드 호스팅 시스템에서 독립적으로 일하고 프로젝트 저장소의 개별 로컬사본에서 작업을 수행

Git의 특징

  1. 분산 서버 관리 시스템
  2. 로컬과 원격에 분리된 저장소 관리
  3. 변경 내역 추적
  4. 브랜치 생성
  5. 브랜치 병합
  6. 병합 충돌 감지

Git의 기능

  1. Git의 데이터는 파일 시스템의 스냅샷
  2. Git은 시간순으로 파일의 스냅샷을 저장
  3. Git은 대부분의 명령을 로컬에서 수행
  4. Git은 오프라인 상태에서도 작업 가능
  5. Git은 데이터 무결성을 위해 SHA-1 해시를 사용하여 체크섬을 만듦
  6. 대규모 프로젝트를 위한 완전한 분산 환경 지원
  7. 체크섬은 해시(SHA-A)로 40자 길이의 16진수 문자열

Git 장점

  1. 분산 환경에서 저장소 관리
  2. 로컬 저장소에서 파일 생성 및 수정
  3. 로컬 저장소에서 수정 내역 추적
  4. 원격 저장소에 적용된 내용를 동일하게 로컬 저장소에 적용
  5. 원격에 영향을 끼치지 않는 브랜치 생성
  6. 버전 관리 및 이슈 추적 용이

Git 용어

저장소 (Repository)

  • 이력을 관리하는 저장소
  • 로컬 저장소(Local Repository): 개인 전용 저장소 (클라이언트에 속함)
  • 원격 저장소(Remote Repository): 공유 저장소

변경 이력 관리 (History)

  • 커밋 단위
  • 40자리 해시키로 관리
  • 날짜, 시간, 커밋 메시지, 작업자
  • 브랜치 형태로 관리

Git의 상태 관리

  • Committed: Staged 상태에서 커밋이 되어서 Git DB에 안전히 저장. 데이터가 로컬 DB에 안전하게 저장된 상태
  • Staged: Un-tracked 상태에서 Tracked 상태로 이동하면 Staged상태로 변경. 현재 수정한 파일을 곧 커밋할 것이라고 표시
  • Modified: Staged에서 수정하면 Modified. 수정한 파일을 DB에 커밋하지 않은 상태

Git 작업영역


작업폴더: Working Directory
준비영역: Staging Erea. 인덱스 영역이라고도 함
저장소: Git Directory

Git의 작업 흐름

1. 저장소 만들기

2. 파일을 생성하고 커밋하기

3. 원격 저장소에 저장하기

4. 분기 (Branch)

  • 단일 브랜치

  • 마스터 브랜치 하나만 사용

  • 멀티 브랜치

  • 다수의 브랜치가 생성

  • master == main
    최신 commit을 가리키는 참조 정보를 가지고 있는 것.

  • HEAD
    HEAD는 어떠한 commit 정보를 가리키는 존재. HEAD가 특정 commit을 가리키면 Working Directory의 파일 내용이 해당 commit 내용으로 변경

profile
개발자로 전직해보자

0개의 댓글