공부/Git, GitHub

[모두의 깃&깃허브]2장. 깃으로 버전 관리 시작하기

개발의 피 2024. 5. 29. 20:53

버전이 어떻게 만들어지지, 또 버전을 어떻게 관리할 수 있는지 

1. 버전 관리의 큰 그림
2. 버전 관리 맛보기
3. 버전이 쌓여 사용자에게 선보여지기까지 

 

 

1. 버전 관리의 큰 그림

* 깃이 관리하는 세 공간 : 작업 디렉터리(working directory), 스테이지(stage), 저장소(repository)

https://thebook.io/080299/0050/

- 작업 디렉터리(working directory) = 작업 트리(working tree) : 우리의 프로젝트가 위치할 공간, 우리의 프로젝트가 위치할 공간 (= .git 숨김 폴더가 놓여있는 곳, 버전 관리의 대상이 위치하는 공간 

깃을 이용해 작업 디렉터리 내에 위치한 파일 및 폴더의 현재 상태를 버전으로 만들고, 만들어진 버전을 관리할 수 있음

- 스테이지(stage) : 변경 사항이 있는 파일 중 다음 버전이 될 후보가 올라가는 공간

- 저장소(repository) : 버전이 만들어지고 관리되는 공간



1) 작업 디렉터리 내 변경 사항 발생 

2) 버전이 될 후보 : 스테이지로 옮기기 

 

2. 버전 관리 맛보기

1) 첫 버전 만들기

- 로컬 저장소 만들기

- 버전을 관리할 대상 만들기

- 커밋 메시지 작성하기 (커밋 메시지 : 버전을 설명하는 메시지)

-> 내가 지금 어떤 파일을 어떻게 변경했는지, 왜 이렇게 변경했는지 등 

2) 커밋 쌓아 올리기 

3) .gitignore로 무시하기

.gitignore 파일 : 무시할 파일/폴더 목록을 적은 파일 

 

3. 버전이 쌓여 사용자에게 선보여지기까지 

1) 커밋 자세히 보기

커밋들을 구분할 수 있는 방법 : 커밋 해시

각 커밋에는 고유한 커밋 해시가 있음 (커밋 해시 : 각 커밋이 가진 고유한 ID)

2) 태그를 붙여 릴리스하기 

릴리스(release) : 개발한 소프트웨어를 사용자에게 선보이는 것 

사용자에게 선보이는 버전을 표기하는 방법 : 커밋 해시 x

(커밋 해시 : 무작위한 문자열 -> 가독성이 좋지 못함 -> 유의미한 커밋(버전) 찾기 어려움)

태그(tag) : 특정 커밋에 붙일 수 있는 꼬리표 -> 커밋이 여러 개 있는 상황에서도 의미 있는 커밋이 무엇인지 한눈에 알아보기 쉬움 

 

대중적인 소프트웨어 버전 표기법 : vX. Y. Z : 주(Major) 버전 / 부(Minor) 버전

주(Major) 버전 : 가장 중요한 버전 -> 새롭게 내놓은 버전이 기존에 내놓은 버전과 호환되지 않을 정도로 큰 변화가 있을 때 증가

부(Minor) 버전 : 새롭게 내놓은 버전이 기존에 내놓은 버전과 문제없이 호환되지만, 새로운 기능을 추가했을 때 증가 

수(Patch) 버전 : 기존에 내놓은 버전과 문제없이 호환되며 버그를 수정한 정도의 작은 변화가 있을 때 증가 

 

요약 : 하나의 버전을 만드는 과정 

1) 작업 디렉터리 내의 파일을 변경하기

2) 변경한 내용 중 버전에 포함할 파일을 스테이지에 올리기

3) 커밋하기 

+) .gitignore를 작성해 버전 관리를 하지 않을 파일이나 폴더를 자동으로 걸러낼 수 있음 

- 각 커밋에는 '커밋 해시'라는 고유한 문자열이 있고, 이렇게 쌓이고 쌓인 커밋에 태그라는 꼬리표를 붙일 수 있음. 이 꼬리표 안에는 보통 버전을 작성하는 규칙에 따라 작성된 버전을 명시하고, 사용자에게 내놓을 준비가 끝나면 이를 릴리스하게 됨.