git이란 무엇인가?

|

패스트캠퍼스 웹 프로그래밍 수업을 듣고 중요한 내용을 정리했습니다.
개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
이 포스팅에서는 git에 대해 알아보며, git에서 사용하는 주요 용어에 대해서 설명합니다.


Git?

git은 분산형 버전 관리 시스템(DVCS, Distributed version control system)이며 C언어로 구현되었다.

이전 포스팅에서 공부한 바로, 버전 관리 시스템은 사용자가 어떤 파일 집합에 대한 히스토리를 생성하고 관리할 수 있도록 도우며 특정 다른 상태(어느 시점)으로 복귀(revert)할 수 있는 기능을 가지고 있다.

이때 파일 집합은 주로 소스코드들이다.

분산 버전 관리 시스템에서 모든 사용자는 완벽한 복사본을 가지고 있으며(소스코드에 대한 히스토리를 포함) 버전 관리 명령어들을 각 사용자의 로컬에서 실행할 수 있다. 이때 DVCS는 중앙 저장소 사용을 항상 요구하지 않는 장점을 갖는다.

주요용어 정리

Repository - 저장소

저장소는 히스토리, 시간/태그(tag)/분기(Branch)에 따라 다른 버전들을 가지고 있다.

git에서 저장소를 다른곳으로 복사하더라도 다시 완벽한 저장소가 되고, 작업하고 있는 복사본으로 수정본들을 얼마든지 검색할 수 있다.

  • remote repository git으로 관리하던 것을 이전까지는 local에서만 했다면 이제는 누구든지 볼 수 있는 서버 공간에서 사용하는 것

Branch & Tag - 분기와 태그

git 저장서는 모든 분기들과 태그들을 가지고 있다. 분기들 중 하나는 master라고 불리는 기본 분기이다.

사용자는 작업에 필요한 어떤 한 버전의 분기를 이 기본분기로 체크아웃(Checkout)한다. 이것을 작업카피 (Working Copy)라고 한다.

Commit - 커밋

어떤 기록의 단위, 스냅샷, 이러한 스냅샷을 이동할 수 있는 단위

소스 수정사항들은 저장소로 커밋할 수 있다.

이것은 지난 시간까지 추적된 것에 대한 새로운 리비전(Revision)을 만드는 것이다. 각 커밋은 저자와 커밋한 내용(어떻게 수정했는지, 누가 커밋했는지)을 저장한다.

즉, 내가 작업을 하면서 기능상의 의미가 생길때, 기능상의 의미있는 변화가 생길때 주로 남긴다.

Revision - 리비전

소스코드의 버전을 가리킨다.

gitSHA1 ids로 리비전을 구분한다. SHA1 ids는 160비트로 긴 편이고 16지수로 표현된다. 가장 최신버전은 HEAD로 불리는 주소로 표현되며 이전 버전은 HEAD~1으로 계속 그런 방식으로 버전이름을 가리킬 수 있다.

Snapshot - 스냅샷

파일들의 변경사항을 저장하는 순간.

gitcommit하거나 프로젝트의 상태를 저장할 때마다 파일이 존재하는 그 순간을 중요하게 여긴다.

파일이 달라지지 않았으면 git은 성능을 위해서 파일을 새로 저장하지 않는다. 단지 이전 상태의 파일에 대한 링크만 저장한다. git은 데이터를 스냅샷의 스트림처럼 취급한다.

Stream - 스트림

흐름 데이터 세트 간에서 데이터의 전송이 실행되고 있는 것으로, 문자 형식의 데이터 항목이 연속한 열로 되어 있는 것이다.

Configuration

배열, 배치, 환경상태

Initialize

초기 내용을 설정하는 것

Pointer - 포인터

다른 객체(=단위 1개)를 가리키기 위해 존재하는 자료형

이 안에 든 자료는 문자, 숫자도 아무것도 아니고 그냥 ‘나는 어떤 커밋을 가리키고 있어’라는 의미를 가진다.