본문 바로가기
개발 도구

git이란?

by Ahngyuho 2023. 8. 12.

이번 포스팅 주제는 git 입니다. 

소프트웨어라는 것은 항상 다수의 사람들과 협업해서 만들어 진다고 생각합니다. 그러기 위해서 내가 담당하는 코드 영역을 남들과 분리하고 모두 공용해서 사용하는 외부 프로젝트 저장소의 필요성이 점점 높아졌습니다.

그렇기에 요즘 git과 github에 대한 개념과 사용법을 익히는 것이 매우 중요해 졌다고 생각합니다.

그래서 이번 포스팅에서는 git에 대한 간단한 개념과 구조에 대해 한번 살표보겠습니다.

 

git 이란?

git은 버전 관리 시스템(VCS) 입니다. VCS란 프로젝트의 변경 사항(파일들의 추가/수정/삭제)을 버전으로 관리해주는 역할을 합니다. git은 변경 사항을 commit 으로 저장하고 이것이 버전이 되는 것입니다. 이렇게 버전을 만들어서 관리해주면 이전의 상태로 돌아가거나 문제의 원인이 된 버전, 이전 버전과의 차이 비교 등등 프로젝트 수행 및 관리가 수월해 집니다.

즉, 개발자가 더 나은 개발 환경에서 개발하도록 도와줍니다! 그렇기에 git과 같은 VCS는 더 나은 개발자가 되기 위해 배워야 하는 도구가 되었습니다.

 

이제 git의 구조와 workflow에 대해서 알아봅시다!

 

Git의 구조와 Workflow

Git은 총 3가지 종류의 작업환경이 존재합니다.

Working directory

 - 변경 사항들이 발생하는 영역

 - 프로젝트를 진행하며 발생된 변경 사항들이 저장

Staging area

 - 현재 버전에서 다음 버전으로 이동할 파일들의 영역

.git directory

 - 프로젝트의 버전들이 저장되는 영역

 

git의 workflow를 한번 살펴보겠습니다.

1. working directory에서 파일을 추가 혹은 수정합니다.

2. 다음 커밋에 포함하고 싶은 변경 사항만 선택적으로 Staging Area에 추가해 줍니다.

3. 현재 Staging Area에 있는 파일들을 그대로 가져와 commit을 수행해 스냅샷을 만들어서

Git repository에 하나의 버전으로 저장됩니다.

 

여기서 commit이라는 것에 좀 더 집중해서 봅시다.

 

Commit(버전 정보)

각각의 버전들에는(commit) 프로젝트의 스냅샷을 들고 있으며 고유한 해시코드를 부여받습니다. 이 해시코드는 commitid가 되고, 추가적으로 commit에는 작성자, 날짜 등의 추가적인 정보 또한 부여할 수 있습니다.

-> gitcommit는 프로젝트의 스냅샷이고 git에서 버전을 관리하기 위해 사용되는 메타 정보도 같이 들고 있음

 

 

정리

이번 포스팅에서는  git 이란 버전 관리 시스템(VCS) 중에 하나이고, 개발자들이 VCS를 사용하는 이유와, git의 3가지 작업 환경, workflow, commit 에 대해서 다루었습니다. 

 

VCS

- 프로젝트의 변경 사항들을 버전으로 관리해서 다루는 시스템

- 개발자의 더 나은 개발 환경 보장(?)

 

git의 3가지 작업 환경

- working directory

- staging area

- git repository

 

commit

- 버전 정보에 대한 메타 데이터