안경잡이개발자

728x90
반응형

  기본적으로 깃(Git) 프로젝트에 담겨 있는 데이터들은 파일 시스템 상에서의 스냅샷(Snapshot)이라고 볼 수 있습니다. 실제로 프로젝트를 커밋(Commit)하여 적용할 때의 순간을 중요시한다는 특징이 있습니다. 파일 자체를 저장하기보다 수정 내역 자체를 저장합니다.


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


  - Working Directory: 작업할 파일이 있는 디렉토리입니다.

  - Staging Area: 커밋(Commit)을 수행할 파일들이 올라가는 영역입니다.

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


  깃 프로젝트는 위와 같은 구성요소를 통해 동작하게 됩니다. 그렇다면 실제로 소스코드를 수정하는 등의 작업을 해서 커밋(Commit)하고, 다시 저장소에 있는 수정 내역을 자신의 컴퓨터로 옮기는 과정들은 어떻게 이루어지게 되는 걸까요?


  아래 첨부 파일은 제가 간단히 그려 본 Git의 기본적인 동작 과정입니다.


Git 동작 과정.xml



  이전 시간에 실습을 통해서 간단히 다루어 본 내용입니다. 원격지에 있는 저장소(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
반응형