본문 바로가기
Programming/Git

[Git] 깃과 버전

by Bam_t 2021. 5. 25.
728x90

지난 포스트에서 폴더를 깃 저장소로 초기화 하는 방법을 다뤘습니다. 그리고 첫 포스트에서 깃은 버전관리를 위한 기술이다~라고 소개했습니다. 이번 포스트에서는 깃이 버전 관리를 하며 등장하는 용어, 공간 등을 간략히 짚고 넘어가려 합니다.


1. 버전

Version. 버전이라는 말은 프로그램들을 설치, 사용 혹은 개발을 해보면서 많이 들어본 단어일 수도 있습니다. 아니면 당장 깃을 깔면서 2.31.1(작성 당시 최신)라는 번호가 있었죠. 아니면 보고서를 올리면서 '보고서_최종'/'보고서_최종_최종'이라는 것도 버전이라고 할 수 있고요. 프로그램으로 예를 들자면, 프로그램에서 버전이라함은 보통 변경사항(기능 추가 혹은 수정)이 생길때마다 프로그램에 붙는 식별 메모입니다.

깃에서 말하는 버전도 프로그램의 버전과 크게 다르지 않습니다. 깃의 버전은 문서를 수정하고 저장하게 되면 생기는 식별 메모입니다. 크게 다르지 않다고 했지만, 사실상 같은 개념이라고  해도 무방하네요.

 

그렇다면 왜 깃으로 버전관리를 해주는가?입니다. 물론 굳이 깃을 쓰지않고 파일을 따로 저장하며, 파일명 등으로 소스 코드의 변경을 기록하고 메모해도 됩니다. 그러나 이런 방식에는 수정 시각이나, 수정한 내용, 작성자들의 구체적인 정보를 일일히 메모 해두기란 쉽지 않은 일 입니다. 그래서 이러한 버전 관리를 편하게 할 수 있도록하는 것이 깃이고 그렇기에 우리는 작업 효율의 향상을 위해 깃을 배워야 하는 것 입니다.

 

자, 그럼 깃을 이용한 버전 관리의 필요성은 이쯤하고 본론인 깃의 작업 공간들을 소개해보겠습니다.

첫 소개에서 깃이 사용하는 공간은 작업 공간, 스테이지, 깃 디렉토리(리포지토리 혹은 저장소)가 있다고 했음을 기억하며 다음 문단을 시작해보겠습니다.

 

 

 

 

2. 작업 공간

작업 공간(작업 트리라고도 함)은 프로그래머가 실제로 작업하는 공간을 일컫습니다. 이 공간은 우리가 실제로 볼 수 있는 공간입니다. 이 곳에서 문서의 작성이나 수정, 저장 등을 하는 실질적 작업공간입니다. 이 공간은 우리가 흔히 보는 폴더와 같은 것이므로 따로 설명하지 않겠습니다.

 

 

 

3. 스테이지

작업 공간은 알겠는데 스테이지라는 낮선 단어가 등장합니다. 스테이지는 작업 공간에서 작업 한 파일들을 버전으로 만들기 전에 대기하고 있는 공간입니다. 작업 공간에서 스테이지로 파일을 옮기는 과정을 '스테이징'이라고 합니다.

 

 

 

4. 리포지토리

저장소/리포지토리/.git Directory 모두 같은 것을 일컫는데, 앞으로는 '리포지토리'라는 단어로 통일해서 사용하겠습니다. 한글로 했을 때 저장소라고 함에서 느낄 수 있듯이 버전으로 만들어진 파일들이 최종적으로 저장된 곳입니다. 다시 정리하면, 리포지토리는 스테이지에서 대기하던 파일들을 버전으로 만들면 저장되는 공간입니다. 이렇게 스테이지에 대기하는 파일을 '커밋(commit)'하면 버전이 만들어지고 리포지토리에 저장됩니다.

 

 

 

 

+.git 폴더에 대한 추가적인 설명

우선 지난번에 빈 폴더를 만들고 'git init'명령을 하니 빈 폴더에 .git 숨김 처리 된 채로 폴더가 초기화되었습니다. 작업 공간은 우리 눈에 보이는 곳이라고 했으니 넘어가고, 스테이지와 리포지토리를 위한 공간이 .git폴더 내부에 들어있습니다. 그래서 중요한 공간이기 때문에 함부로 수정/삭제를 막기 위해 숨김 처리가 되어있습니다. 

 

 

 

 

5. 파일 수정까지의 변화

마지막으로 작업 공간에서 작업 하던 파일을 버전을 만들어 리포지토리에 저장되기 까지를 정리하겠습니다. 그림으로 만들었기에 이해에 도움이 되었으면 좋겠습니다.

 

파일을 작성해서 스테이징을 합니다. 원본 파일은 유지되면서 스테이지에 파일이 복사됩니다.

 

스테이지에 있던 파일을 커밋하면 스테이지에서 리포지토리로 버전이 만들어지며 최종적으로 저장됩니다. 당연히 원본 파일도 유지됩니다.


728x90

'Programming > Git' 카테고리의 다른 글

[Git] 커밋, Commit  (0) 2021.06.11
[Git] 스테이징  (0) 2021.05.28
[Vim] Vim 기초 배우기  (0) 2021.05.26
[Git] 깃 시작하기  (0) 2021.05.24
[Git] 깃?  (0) 2021.05.24

댓글