TIL

GIT 다시 한번 이해하자(1)

류정근 2024. 6. 13. 09:55

이번 팀프로젝트 아직 블로그에 정리는 못했지만 이번에는 의외로 다른 어려움은 크게 없었는데,

깃을 사용하는 부분에서 부족함을 느껴서 다시 정리를 하고 넘어가려 한다.

 

깃 다시한번 이해하자!!!

 

Git의 목표

  • 빠른 속도
  • 단순한 구조
  • 비선형적인 개발(수천 개의 동시 브랜치)
  • 완벽한 분산
  • 대형 프로젝트에도 유용할 것(Linux 커널처럼)
  • Git은 매우 빠르고, 대형 프로젝트에 적합하며, 동시다발적인 브랜치를 잘 처리함

 

스냅샷 방식

  • Git과 다른 VCS(CVS, Subversion 등)의 가장 큰 차이점은 데이터를 다루는 방식임
  • 대부분의 VCS는 파일들의 변화를 시간순으로 관리하지만, Git은 전체 저장소의 스냅샷을 기록함

 

 

 

Git의 로컬 명령어 실행

  • 거의 모든 명령이 로컬 파일과 데이터만 사용함
  • 네트워크에 있는 다른 컴퓨터가 필요 없음
  • 프로젝트의 모든 히스토리가 로컬 디스크에 있어서 모든 명령이 순식간에 실행됨
  • 오프라인 상태이거나 VPN에 연결하지 못해도 작업 가능

Git의 무결성

  • Git은 데이터를 저장하기 전에 항상 체크섬을 구하고, 그 체크섬으로 데이터를 관리함
  • 체크섬을 이해하는 Git 없이는 파일이나 디렉토리를 변경할 수 없음
  • 체크섬은 Git에서 가장 기본적인 데이터 단위이자 기본 철학임
  • Git은 SHA-1 해시를 사용하여 체크섬을 생성하며, 이는 40자 길이의 16진수 문자열임
  • 파일의 내용이나 디렉토리 구조를 이용하여 체크섬을 구함
  • 예: SHA-1 체크섬 예시 - 24b9da6552252987aa493b52f8696cd6d3b00373
  • Git은 파일을 이름이 아닌 해시로 저장함

Git의 데이터 추가 방식

  • Git으로 무슨 작업을 하든 Git 데이터베이스에 데이터가 추가됨
  • 되돌리거나 데이터를 삭제할 방법이 없음
  • 다른 VCS처럼 커밋하지 않으면 변경사항을 잃어버릴 수 있지만, 일단 커밋하면 데이터를 잃어버리기 어려움
  • Git을 사용하면 프로젝트를 심각하게 망가뜨릴 걱정 없이 여러 실험을 해볼 수 있음
  • Git의 되돌리기 기능을 통해 데이터가 어떻게 저장되고 손실을 복구하는지 알 수 있음

Git의 이러한 무결성과 데이터 관리 방식 덕분에 사용자는 데이터를 안전하게 관리하면서 다양한 실험을 자유롭게 할 수 있음.

 

워킹트리, Staging Area, Git 디렉토리

 

Git의 세 가지 상태

  1. Committed: 데이터가 로컬 데이터베이스에 안전하게 저장된 상태
  2. Modified: 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 상태
  3. Staged: 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태

Git의 세 가지 단계

  1. Git 디렉토리: 프로젝트의 모든 히스토리와 메타데이터가 저장된 곳
    • .git 폴더에 존재함
    • Git 데이터베이스라고도 함
  2. 워킹 트리(Working Tree): 현재 작업 디렉토리로, 프로젝트의 특정 버전을 체크아웃한 상태
    • 사용자가 실제로 파일을 보고 수정하는 디렉토리
  3. Staging Area: 다음 커밋에 포함될 파일의 정보를 저장하는 공간
    • 인덱스(Index)라고도 함
    • 커밋할 파일들을 선택하고 준비하는 영역

세 단계의 연결

  • Modified: 워킹 트리에서 파일을 수정하면 Modified 상태가 됨
  • Staged: 수정한 파일을 Staging Area에 추가하면 Staged 상태가 됨
  • Committed: Staging Area에 있는 파일을 커밋하면 Git 디렉토리에 저장되며 Committed 상태가 됨

 

커맨드나 사용법은 다음 TIL에 작성

'TIL' 카테고리의 다른 글

인텔리제이 버전 문제 해결  (0) 2024.06.18
GIT 다시한번 이해하자!!!(2)  (0) 2024.06.14
applicaton.properties 환경변수 설정하기  (0) 2024.06.07
Token,RefreshTokebn 만들기  (0) 2024.06.03
JWT(JSON Web Token) 사용하기  (4) 2024.05.31