power-girl0-0

[GIT] git의 동작원리 본문

개발

[GIT] git의 동작원리

power-girl0-0 2021. 2. 17. 18:45
728x90

 

 

해당 게시물은 나동빈 님의 'Git으로 시작하는 협업 및 오픈소스 프로젝트'강의를 바탕으로 작성된 것입니다.

스스로 공부한 것을 정리하고 복습하기 위한 목적으로 작성하였습니다.


기본적으로 깃(Git) 프로젝트에 담겨 있는 데이터들은 파일 시스템 상에서의 스냅샷(Snapshot)이라고 볼 수 있다.

또한, 실제로 프로젝트를 커밋(Commit)하여 적용할 때의 순간을 중요시한다는 특징이 있다.

파일 자체를 저장하기보다 수정 내역 자체를 저장한다.


 Git 프로젝트의 3가지 구성요소 

Git의 동작 원리를 바르게 이해하기 위해서는 Git 프로젝트의 세 가지 구성요소에 대해서 이해해야 한다.

   Working Directory
    : 작업할 파일이 있는 디렉토리이다.
 
   Staging Area
    : 커밋(Commit)을 수행할 파일들이 올라가는 영역이다.

   Git Directory
    : Git 프로젝트의 메타 데이터와 데이터 정보가 저장되는 디렉토리이다.
      이는 아래 사진의 .git파일을 나타낸다.

 

 


 git의 동작원리 

깃 프로젝트는 위와 같은 구성요소를 통해 동작하게 된다.

 

그렇다면 실제로 소스코드를 수정하는 등의 작업을 해서 커밋(Commit)하고, 다시 저장소에 있는 수정 내역을 자신의 컴퓨터로 옮기는 과정들은 어떻게 이루어지는지 아래에서 알아보자.


아래 사진은 Git의 기본적인 동작 과정이다.

 

 

 

원격지에 있는 저장소(Remote Repository)에서 맨 처음에 클론(Clone)을 받으면, 자신의 컴퓨터에 해당 프로젝트가 통째로 다운로드된다.

 

이후에 자신이 수정한 내역을 다시 원격지 저장소까지 반영하려면 git add, git commit, git push의 과정을 거쳐야 한다.

 

다시 저장소로부터 수정된 내역을 받을 때에는 git fetch명령어를 통해서 수행한다.

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

 

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


 저장소(Repository) 

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

실제로 프로젝트의 메타 데이터를 포함해 각종 데이터는 .git 폴더에 담기게 되며, 해당 폴더를 열어 보면 각종 데이터와 해시 값 등이 담겨 있다.

 

어떠한 파일을 Commit 하게 되면 각 작업들을 분류하기 위해 내부적으로 해당 작업에 대한 해시(Hash) 값을 이용하는 것이다.

일반적으로 해시 값은 충돌이 발생하지 않기 때문에 정확히 커밋 내역들을 관리할 수 있다.



 

 

728x90
Comments