운이 좋게 이직을 하게 되었다. 전에 근무하던 직장에서는 SVN만 사용했었는데 이곳은 Git을 사용한다고 한다.

한번쯤 써봐야지 생각만 하고 있었는데, 실제로 당장 사용하려니 너무 헤매는 꼴이 한심해서 Git부터 정리를 해보려 한다.

 


 

Git 프로젝트에 담겨 있는 데이터는 파일 시스템 상에서의 스냅샷이라고 볼 수 있다.

 

깃은 커밋하여 적용할때의 그 순간을 중요시하는 특징이 있다.

파일 자체를 저장하기보다는 수정 내역 자체를 저장한다고 생각하면 된다.

 

Git의 동작 원리를 이해하기 위해서는 3가지를 알아야 한다.

 

1. Working Directory (Local, Working Copy) : 현재 프로젝트 폴더에 존재하는 파일들 그 자체를 의미함. 실제로 작업자의 작업이 이루어지는 영역이라고 생각하면 된다.

 

2. Index (Staging Area, Cashe) : 개념적으로는 커밋이 이뤄질 준비가 된 파일의 내용들이 위치하는 영역, 실제로는 하나의 파일로(.git/index)로 존재하는데 로컬에 변동사항이 생겼을 경우, git add명령어를 수행함으로써 해당 변동 사항을 인덱스 영역에 반영시킬 수 있다. 그리고 인덱스 파일은 커밋이 이뤄질 준비가 된 파일의 내용들 각각에 대해 그 파일명과 해당 파일의 내용을 담고 있는  Blob 파일의 주소가 기록된다.

 

3. Git Directory : Git 프로젝트의 메타 데이터와 데이터 정보가 저장되는 디렉터리이다.

 

Git 의 동작과정

우선 원격 저장소에 우리가 수정한 코드를 보내기 위한 과정이다.

 

1. Working Directory 에서 작업자는 코드를 수정한다.

2. 수정된 코드를 반영하기 위해서 git add 명령어를 이용하여 Staging Area로 보낸다.

3. Staging Area에서 commit 명령어를 통해, git 디렉터리 상에 commit 당시의 수정 내역들이 기록된다. 즉 우리가 가진 컴퓨터 내의 Repository에 저장된다.

4. commit 된 내용들을 git push라는 명령어를 이용해 최종적으로 github와 같은 원격 저장소로 보낸다.


다음은 다른 사람이 했던 수정한 데이터를 가져오기 위한 과정이다.

 

1. git fetch를 통해서 우선 원격 저장소로부터 수정된 내역을 받을 수 있다.

2. 이러한 과정에서 내가 수정한 내역이 원격지 저장소에 있는 내역과 다를 수 있기 때문에 git merge를 수행하여 자신의 컴퓨터에 있는 소스코드를 원격지 저장소와 맞추게 된다.

 

* git fetch와 git merge를 한번에 사용하는 명령어인 git pull을 사용할 수도 있다.


저장소(Repository)에 대해서

 

저장소는 실제 소스코드가 담겨 있으면서 커밋 내역등의 모든 작업 이력이 담겨 있는 공간이다.

실제로 프로젝트의 메타 데이터를 포함해 각종 데이터는 git 폴더에 담기게 되는데 실제로 해당 폴더에 담긴 내용들을 살펴보면 해시 값 등이 담겨있는 것을 볼 수 있다.

 

해시값이 포함되어 있는 이유는 각 작업들을 분류하기 위해서 내부적으로 충돌이 발생하지 않도록 관리 차원에서 사용하게 된다.

 

 

 

 

출처 : https://domybestinlife.tistory.com/258

 

'Git' 카테고리의 다른 글

[Git] Git의 4영역  (0) 2022.10.06

+ Recent posts