intro

Git 시작하기

progit

Git은 널리 쓰이는 버전 관리 시스템(VCS, Version Control System)이다.

버전 관리 시스템

  • Revision control system
    • 파일에서 변경된 부분을 관리한다.
    • patch set을 구조화해서 파일로 저장하고, 그것을 적용해 특정 시점으로 되돌릴 수 있다.
  • 중앙 집중식 버전 관리 (CVCS)
    • 협업을 위해 만들어졌다.
  • 분산 버전 관리 시스템 (DVCS)
    • Git이 여기에 해당한다.
    • 클라이언트가 마지막 스냅샷만 checkout 하지 않는다.
    • 그래서 저장소 전부를 복제(clone)한다.

Git의 역사

Linux 프로젝트에서 BitKeeper를 사용하다가 라이선스 비용 문제로 직접 Git을 만들게 되었다.

목표는 다음과 같다.

  • 빠른 속도
  • 단순한 구조
  • 비선형적 개발
  • 완벽한 분산

Git 기초

  • 기존 시스템들은 각 파일의 변화(차이, 즉 델타)를 기반으로 관리한다.
  • Git은 데이터를 스냅샷의 연속으로 취급한다.
    • 변경된 파일은 복제해서 저장한다.
    • 변경이 없으면 복제하지 않고 이전 파일에 대한 링크만 저장한다.
  • 거의 모든 명령을 로컬에서 진행한다. (그래서 빠르다)
  • 무결성: 데이터를 저장하기 전에 체크섬을 구하고, 그 체크섬으로 데이터를 관리한다.
  • Git은 데이터를 추가하기만 한다.

파일의 상태

파일은 committed, modified, staged 세 가지 상태를 가진다.

상태 설명
committed 데이터가 로컬 데이터베이스에 저장됨
modified 수정했지만 아직 저장하지 않은 파일이 존재함
staged 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태

이에 따라 프로젝트는 세 가지 단계로 나뉜다.

  • git directory: Git이 관리하는 저장소
  • working tree: 작업하기 위해 디스크로 파일을 가져온 곳
  • staging area: git directory 안에 존재하며, 곧 커밋할 파일의 정보를 저장한다

설정

git config --global user.name "Yunseong"
git config --global user.email "[email protected]"

사용자 이름과 이메일을 설정한다.

git config --global core.editor vi

텍스트 편집기를 설정한다.

git config --list

설정된 내용을 모두 보여준다.