본문 바로가기
[R&D] 개발 도구/Git

[Git] Git 이란? (Git의 기본 개념)

by Geuni 2022. 8. 9. 08:04
728x90
반응형

Git 이란?

Git은 대/소규모 프로젝트의 모든 것을 빠르고 효율적으로 다루기 위한 분산 버전 관리 시스템입니다.

이러한 소프트웨어 프로젝트를 관리하는 것을 형상 관리라고도 하죠.

흔히 소스 코드를 관리하기 때문에 코드 관리를 위한 것처럼 보이지만 사실 프로젝트의 모든 리소스를 관리할 수 있습니다.

(소스 코드 관리에 주로 사용되는 것은 맞습니다!!)

 

Git은 파일단위로 일일이 저장하고 비교하는 것이 아닌 "스냅샷의 흐름"을 개념으로 사용합니다.

(데이터를 통째로 저장하는 것이 아니기 때문에 비교적 사이즈가 작습니다.)

 

일단 전체적인 개념을 간단한 명령어와 함께 그림으로 표현해 보겠습니다.

간단하게 표현해보겠다고... 정리해봤는데 잘 안되네요 ㅎㅎ..

 

우선 각 박스 안에 내용과 관계를 설명 드리겠습니다.

 

[Remote Repository]
원격 저장소(Remote Repository)는 Bare, central, shared 저장소라고도 불립니다.
여기에는 물리적인 파일들이 존재하지 않고 해당 프로젝트의 히스토리(변경사항) 정보들만 가지고 있습니다.
실제로 폴더를 들어가보면 git 관련 데이터를 제외하고는 아무것도 없습니다.
여러 사람이 git clone 명령을 통해 Local Repository를 구성하여 따로 작업을 할 수 있습니다.

※ origin은 Remote Repository의 URL을 칭하는 이름을 말합니다.
기본 값이 origin으로 되어있지만 변경 가능합니다.


[Local Repository]
Local Repository는 내가 작업하는 환경에 구축된 Git 저장소를 말합니다.
git ini <project name>
명령을 통해 로컬 환경만 구성해서 사용할 수 있지만, 위 그림처럼 Remote Repository에서 복제하여 구성할 수 있습니다.
로컬 저장소에는 물리적인 파일이 존재하게 됩니다. (실제 개발을 진행 할 수 있습니다.)
최초 구성 시에는 Clone를 통해 복사를 하고, 타인에 의해 새로 업데이트된 사항(최신 버전)을 가져 올 경우 Pull하여 로컬을 갱신합니다.
또한 로컬 작업을 이용해 내가 변경한 사항을 Remote Repository로 업데이트 시키는 경우 Push합니다.

[Working Directory]
Working Directory는 단어 그대로 작업 공간입니다.
내가 로컬에서 코드를 수정하는 등의 개발을 진행하는 공간을 말합니다.

[HEAD]
git에서 HEAD의 개념은 꼭 알고 계셔야합니다. (별건 없습니다 ㅎㅎ)
HEAD는 내가 작업하고 있는 저장소의 위치를 말합니다.
저장소의 위치(원본)만을 가리키기 때문에 내가 수정을 해서 저장소에 기록된 내용과 달라진다면 작업 공간과 차이가 생기겠죠?
git은 이러한 Working DirectoryHEAD와의 차이를 구분하여 변경사항을 기록합니다.
그리고 commit을 통해 기록이 완료되면, HEAD는 해당 위치로 옮겨가게 됩니다.
(작업하는 저장소의 위치가 변경되었으니까요!)

[Index]
IndexWorking Directory의 변경사항 중 HEAD로 기록하기 위한 내용을 저장하는 가상공간입니다.
즉, 5개의 변경사항중 1개만 적용하고 싶을 경우 Index에 먼저 해당 1개를 저장한 후 commit 하는 것이죠!
Indexstage area라고도 칭하고 stage area에 저장하는 작업을 staging이라고 표현합니다.
물론 commit 명령에 -a 옵션을 사용해 모든 변경사항을 바로 적용시킬 수 있습니다.

 


간단하게 정리해 본다고 했지만 역시나 쉽지 않네요...
확실히 전혀 모르는 분이 본다면 이해하기 어려울 것 같습니다.
하지만 들어는 봤고 한번 사용은 해봤는데, 잘 이해가 안 된다 싶으면 조금은 감이 잡힐 수 있지 않을까 합니다.

728x90
반응형

댓글