git

#2 깃(Git) - 스테이지와 버전이 만들어지는 과정.

에이블디 2021. 10. 28. 16:21

안녕하세요! 에이블디입니다!

저번 시간에는 리포지토리(저장소)에 대해 간략하게 알아보았는데요!

이번 시간에는 스테이지와 커밋에 대해 알아보는 시간을 갖도록 하겠습니다.

 

지난 시간 마지막 부분에 버전에 대해 살짝 다루었었죠?

깃에서 버전이란 파일을 수정하고 저장할 때마다 생기는 것인데요, 파일을 수정할 때마다 관리하기 위해 파일 이름을 계속해서 변경하면서 관리한다고 가정해 볼게요.

이때 수정이 100회, 1,000회 이상 발생하게 되면 수정된 파일마다 이름을 바꾸어서 저장하고 관리해야 하겠죠? 이렇게 되면 파일을 관리하기가 너무너무 힘들어질 수밖에 없는데요, 깃에서는 파일을 수정할 때마다 원래 파일 이름은 그대로 유지하면서 파일에서 무엇을 변경했는지를 변경 시점마다 저장하고, 또 버전마다 작업했던 내용을 확인할 수 있고, 이전 버전으로 되돌아갈 수도 있습니다.

 

이렇게 파일을 다른 이름으로 저장해 버전을 만드는 방법보다 훨씬 쉽게 버전을 만들고 버전을 만든 시간과 수정 내용까지 기록할 수 있는 것이 깃(git)입니다.

 

그렇다면 깃은 어떻게 파일 이름은 그대로 유지하면서 수정내역을 기록할 수 있을까요?

이걸 이해하기 위해 저희가 공부해야 할 것이 스테이지와 커밋입니다.

 

일단 버전을 만드는 단계부터 살펴보도록 하죠!

작업트리

작업트리(working tree)는 파일 수정, 저장 등의 작업을 하는 디렉터리로, '작업 디렉터리(working directory)'라고도 합니다.

전 시간에서 만들었던 test-git 디렉터리가 작업 트리가되는 거에요!

 

스테이지

스테이지(stage)는 버전으로 만들 파일이 대기하는 곳입니다.

스테이징 영역(staging area)이라고 부르기도 합니다. 

작업 트리에서 5개의 파일을 수정했는데 3개의 파일만 버전으로 만들려면 3개의 파일만 스테이지로 넘겨주면 됩니다.

 

리포지토리(repository, 저장소)

리포지토리는 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳입니다.

 

스테이지와 리포지토리는 깃을 초기화했을 때 만들어지는 .git 디렉터리 안에 숨은 파일 형태로 존재하는 영역입니다.

지금부터 .git안에 있는 스테이지와 리포지토리 영역에서 깃이 버전을 만드는 과정을 보기로 하죠!

 

abled.txt 파일을 수정한다고 가정했을 때 파일을 수정하고 저장하면 그 파일은 작업 트리에 있게 됩니다.

그리고 수정한 abled.txt 파일을 버전으로 만들고 싶을 때 스테이지에 넣습니다.

다른 파일도 수정한 뒤 버전으로 만들겠다면 스테이지에 넣어 둡니다.

파일 수정을 끝내고 스테이지에 수정한 파일들을 다 넣었다면 버전을 만들기 위해 깃에서 '커밋(commit)' 명령을 내립니다.

커밋 명령을 내리면 새로운 버전이 생성되면서 스테이지에 대기하던 파일이 모두 리포지토리에 저장됩니다.

다시 한번 정리해 보자면 

작업 트리에서 파일을 수정 - 수정한 파일 중 버전으로 만들고 싶은 것을 스테이지에 저장 - 스테이지에 있던 파일을 리포지토리로 커밋

하는 것이 깃이 버전을 만드는 순서입니다.

 

다음 시간에는 직접 실습을 하면서 버전을 만들어 보도록 하겠습니다!