Git

2 분 소요

본 포스팅은 Scott Chacon 저자의 ‘Pro Git’을 공부하며 정리한 노트입니다.

버전 관리 시스템 - VCS

파일의 변화를 시간에 따라 기록하여 과거 특정 시점의 버전을 다시 불러올 수 있는 시스템을 말합니다. 개발 협업과 프로젝트 버전/이력 관리를 위해 사용합니다. 중앙집중식/분산 버전 관리 시스템이 존재합니다.

중앙집중식 버전 관리 시스템(CVCS)은 로컬에서 변경 사항을 기록하는 로컬 VCS에서 진화하여 하나의 중앙 서버가 다수의 클라이언트의 파일을 관리합니다. 중앙서버가 다운되면 시스템 기능을 상실하는 특징이 있습니다.

분산 버전 관리 시스템(DVCS)은 클라이언트가 파일들의 마지막 스냅샷을 가져오는 대신 저장소를 통째로 복제합니다. 복제된 저장소를 다시 서버로 복사하면 서버가 복구된다는 특징이 있습니다. 또한 중앙집중식 버전 관리 시스템에 비해 복잡합니다. 독립적인 저장소 관리가 가능하다는 특징이 있습니다. Git은 분산 버전 관리 시스템입니다.

개발자는 자신만의 변경 내역을 가질 수 있으므로 중간 작업 결과를 부담없이 저장할 수 있습니다. 서버에 접근할 수 없는 상황에서도 본인의 로컬 저장소를 통해 개발 가능합니다. 따라서 불특정 다수의 사용자가 자유롭게 프로젝트에 참여할 경우에 많은 장점으 가지므로 오픈소스 진영에서 선호합니다.

Git의 기능 및 사용법

commit: 수정 내역을 사용자 기준의 의미로 기록합니다.

branch: 완전히 독립된 작업 공간을 만듭니다.

checkout: 독립된 작업 공간인 브랜치를 자유롭게 이동할 수 있습니다.

merge: 브랜치와 브랜치간 내용을 병합할 수 있습니다.

Git에 대한 개념 정리

  • Git의 데이터는 파일 시스템의 Snapshot이라 할 수 있으며, 크기가 아주 작습니다.
  • Git에서 branch는 commit 사이를 가볍게 이동할 수 있는 어떤 포인터 같은 것입니다.
  • Git은 최초로 commit하면 master라는 이름의 branch를 만들고, 자동으로 master branch가 가장 마지막 commit을 가리킵니다.
  • Git은 HEAD라는 특수한 포인터를 갖고 있고, 이 포인터는 현재 작업하고 있는 local branch를 가리킵니다.
  • File Status Lifecycle: Git에서 문서나 코드가 처리되는 과정
    • Git은 파일을 Modified, Staged, Commited 세 가지 상태로 관리합니다.
    • Modified: 수정한 파일을 아직 로컬저장소에 commit하지 않은 것을 의미합니다.
    • Staged: 현재 수정한 파일을 곧 commit할 것이라고 표시한 상태를 의미합니다.
    • Commited: 데이터가 로컬 저장소에 안전하게 저장됐다는 것을 의미합니다.
  • Git은 Git Directory, Working Directory, Staging Area 세 가지 영역으로 분리됩니다.
    • Git Directory: Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳
    • Working Directory: 수정할 파일들이 있는 디렉토리
    • Staging Area: Git Directory에 있으며, 단순한 파일이고 곧 commit할 파일에 대한 정보를 저장

Remote repository

협업을 하기 위해서는 프로젝트 공유 수단이 필요합니다. 외부 저장소(Remote repository)를 이용해 프로젝트를 공유합니다. 주로 gitHub나 Bitbucket을 사용합니다.

GitHub

GitHub는 git을 기반으로 소스코드 호스팅을 하고 협업 지원 기능들을 지원하는 마이크로소프트의 웹 서비스입니다. Git 저장소를 원격에서 관리할 수 있고 협업이 가능하도록 웹 서비스로 이슈 트래커를 제공하고 있습니다. Git으로 사용할 수 있는 기능을 웹 인터페이스로 사용할 수 있으며, 저장소 관련 통계, 위키, 정적 웹 사이트 호스팅, 패키지 호스팅 등 여러 서비스를 사용할 수 있습니다.

GitHub의 핵심 기능은 외부 저장소 호스팅입니다. GitHub를 통해 로컬 개발 환경과 온라인에서 안전하게 git 저장소에 접근할 수 있습니다.

댓글남기기