Git 용어
Git내의 용어
Version Control System(VCM) / Source Code Manager(SCM) 버전 컨드롤이라는 것은 소스 코드의 다른 버전을 관리하는 도구 입니다. 음... 소스 코드를 관리하는 역할을 하는 것이며, Source Code Manager(SCM)소스 코드 관리자라고 말할 수도 있겠네요. Git의 Domain을 주소를 보더라도 git-scm.com이라고 되어 있습니다.
Commit Git은 여러분들이 Commit이라는 행위로 만들어내는 파일을 하나의 스냅샷으로 여기며 이 묶음들을 하나의 작은 파일시스템으로 생각합니다. 즉, 여러분들이 Commit 할 때마다 여러분이 작성한 소스 코드에 해당하는 스냅샷들을 찍은 것이라고 생각하면 되겠네요. 어제 찍은 사진이 사진을 찍은 현장의 모든것(시간, 날씨, 분위기, 냄새 등등)을 담지 못하고 그때를 떠올리기 하는 하나의 참조물로서의 역할을 하듯, Commit을 통해 만들어진 스냅샷들은 여러분들의 소스코드로 가게 하는 reference를 만들어 주는 것입니다. Git에 있는 모든 기능들은 Commit을 잘 할 수 있게 도와주는 역할을 합니다.
Repository / repo Repository는 많은 커밋들로 구성되며, 여러분의 컴퓨터에 또는 다른 컴퓨터에 존재할 수 있습니다. Git과의 커뮤니케이션에 사용되는 몇가지 파일들 뿐만아니라 여러분의 작업 파일을 포함하고 있는 하나의 디렉토리입니다.
Working Directory Working Directory는 여러분들의 컴퓨터 파일시스템에서 보게 되는 파일들입니다. 여러분들의 Code Editor(Atom, Webstorm..)에서 프로젝트 파일을 열었을때, Working Directory에서 여러분들의 파일들을 이용해 작업을 수행하게 되는 것입니다. 작업중인 파일들은 Repository에 저장 또는 Commit되어 있는 파일과는 다릅니다. Git으로 작업을 할때, Working Directory는 Current Working Directory(CWD)의 Command line 컨셉과는 다른 것입니다. CWD는 Shell이 현재 바라보고 있는 Directory라는 의미입니다.
Checkout Checkout은 repository의 컨텐츠가 Working Directory에 복사되었을때를 말합니다.
Staging Area / Staging Index / Index 여러분들의 다음 Commit에 관한 정보들을 저장하고 있는 Git directory에 있는 하나의 파일입니다. Staging area은 Git이 다음 Commit을 위한 준비 테이블로 생각하면 됩니다. Staing Index에 있는 파일들은 Repository에 추가되기 위해 준비됩니다.
SHA 개별 Commit을 수행하게 되면 이에 대한 ID number가 생기게 됩니다. 이를 Secure Hash Algorithm(SHA)라고 합니다. 이 코드는 0-9 와 a-f를 이용하여 한줄에 40개의 문자열을 파일내의 컨텐츠와 Git의 디렉토리 구조를 기반으로 만들어 지게 됩니다.
Branch 주요 개발 라인으로부터 분기되어 만들어지는 새로운 개발 라인입니다. 주요 개발 과정에서의 변경 사항없이 개발을 진행할 수 있도록 도와 줍니다. 게임에서 생각해보면, 성공하기 힘든 퀘스트를 수행해야 할 때 여러분들은 시도하기 전에 Save Point를 이용해 저장하게 됩니다. 저장되기 전까지의 과정이 주요 개발 과정이라면 Save Point 이후의 과정이 Branch라고 생각하면 됩니다. 여러가지 개발 과정들을 시도 할 수 있고, 성공하지 못하면 계속해서 다시 시도할 수 있기 때문입니다.