본문 바로가기

개발 이야기/Git

Git 요약 [용어설명] 1. Git이란?, Git 최초 설정, 도움말(help) 보기

반응형

 
 
 
 

Git이란?

  • [깃]이라고 발음된다.
  • 소프트웨어 버전관리 시스템.
  • 원래는 Linux 소스코드를 관리할 목적으로 개발, 2005년 탄생.
 

Git은 DVCS (Distributed version control system, 분산 버전 관리 시스템)이다.

  • 반대는 CVCS (Centralized VCS, 중앙집중식 버전 관리) ex) Subversion 

 

Git은 변화가 아니라 Snapshot을 저장한다.

  • Snapshot(스냅샷)이란?
    • 단어를 번역하면 움직이는 물체를 재빨리 찍는 사진. 카메라로 그 순간을 남기듯이 그 당시의 모습을 기억한다는 의미.
  • Git은 데이터를 파일 시스템 스냅샷(그 당시의 파일 시스템 자체)로 취급하고 크기가 아주 작다.
  • 기존 CVCS는 변화와 파일목록을 저장.

 

Git은 성능을 위해서 파일을 새로 저장하지 않는다. 단지 이전 상태의 파일에 대한 링크만 저장.

 

Git은 거의 모든 명령을 Local에서 실행한다.

  • Local(로컬)이란?
    • 원격(Remote)의 반대. 쉽게 말하면 내가 쓰는 컴퓨터.
    • 한국어로는 Local의 개념이 영어처럼 자주 쓰이지 않는데 구지 번역하면 지역적.. 쉽게 버스로 말하면 시외 버스(빨간 버스)와 달리 우리 동네만 다니는 지선 버스(초록버스)가 Local 버스이다. 우리 지역을 cover한다는 개념.
  • 네트워크 연결 없어 빠르다.
  • 프로젝트의 모든 히스토리가 로컬 디스크(내 컴퓨터 안에)에 있기 때문에 모든 명령이 순식간에 실행
  • 비행기나 기차 등에서 작업하고 네트워크에 접속하고 있지 않아도 Commit할 수 있다.

 

Git의 무결성(데이터에 흠이 없음)

  • Git은 데이터를 저장하기 전에 항상 Checksum을 구하고 그 Checksum으로 데이터를 관리 (체크섬이 맞지 않으면 파일이 손상된 것.)
  • SHA-1 Hash(해쉬) 사용. 40자 길이의 16진수 문자열.
  • 파일의 내용이나 디렉토리 구조를 이용하여 Checksum을 구한다.
  • 관리시 파일이름으로 저장하지 않고 해당 파일의 Hash로 저장

 

Git은 데이터를 추가할 뿐

  • 되돌리거나 데이터를 삭제할 방법이 없다. (Git 자체에서는 지우지 않지만, 유저가 변경사항을 전부 커밋하지 않고 리셋하든지 하면 변경사항이 날아가 다시 살릴 수 없으므로 주의하자.)
  • 커밋하고 나면 데이터를 잃어버리기 어렵다. 

 

세 가지 상태 States

  • Committed 데이터가 (버전 관리용) 로컬 데이터베이스에 안전하게 저장됨
    • Commit(커밋)이란?
      • 영어로 '공개적으로 의사를 밝히다'라는 뜻이다. 내가 작성한 파일을 공식적으로 외부에 공개할 목적으로 저장한다는 개념. Committed는 공식적으로 외부에 공개할 목적으로 저장되었다는 의미.
  • Modified 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않음
  • Staged 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태

 

Git directory (.git)

  • Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳
  • 다른 컴퓨터에 있는 저장소를 Clone(복제) 할 때 Git 디렉토리가 만들어진다.

 

Working Tree 작업 트리

  • Local folders 내가 작업하고 있는 폴더와 파일들
  • 프로젝트의 특정 버전을 Checkout 한 것
  • Checkout(체크아웃)이란?
    • Git에서 체크아웃이란 파일, 커밋, 브랜치 등의 여러 버전들 간에 전환하는 행동을 의미한다.
    • 본래 영어에서 check out은 머물던 호텔/병원에서 방을 비우고 비용을 결제하고 나간다던지 상점에서 장바구니에 물건을 담고 계산하고 나간다던지 하는 것을 의미하는데 현재 하던 작업을 정리하고 나간다는 의미로 Git에서 사용한듯 하다.

 

Index or Staging Area

  • Index의 의미: 색인. 내 파일들 중에서 commit할 파일들을 골라 표시한 것이라는 의미이다.
  • Staging Area의 의미무대. 내 파일들 중에서 commit할 파일들을 골라 무대에 올린다(Stage)는 의미이다.
  • 저장소와 작업 트리 사이에 존재하는 공간
  • Git 디렉토리에 있다. 곧 커밋할 파일에 대한 정보를 저장.

 

Git의 기본 작업

  1. Working Tree에서 파일을 수정
  2. 파일을 Stage 해서 Staging Area에 Commit할 스냅샷을 만든다.
  3. Staging Area에 있는 파일들을 Commit해서 Git 디렉토리에 영구적인 스냅샷으로 저장한다.
 
 
Git 최초 설정
  • 환경 설정은 한 컴퓨터에서 한 번만 하면 된다. 업그레이드해도 유지.
  • 사용자이름과 이메일 주소를 설정
    • git config --global user.name "John Doe"
      git config --global user.email johndoe@example.com
    • 만약 프로젝트마다 다른 이름과 이메일 주소를 사용하고 싶으면 --global 옵션을 빼고 명령을 실행
  • 텍스트 편집기 설정
    • git config --global core.editor emacs
    • Vim과 Emacs, Notepad++은 꽤 인기 있는 편집기
  • git config --list 설정한 모든 것 확인
  • git config <key> 특정 Key에 대해 어떤 값을 사용하는지 확인
 
 
도움말 보기
  • git help <verb>
  • git <verb> --help
  • man git-<verb>
  • 그래도 모르면 Freenode IRC 서버(irc.freenode.net)에 있는 #git 이나 #github 채널에 물어볼 것
반응형