본문 바로가기
Git&GitHub

[GIT 02] 버전 만들기 - working tree, stage, repository

by 어쩌다개발 2023. 1. 18.
반응형

참고 : do it! 깃&깃허브 입문

GIT에서 버전이란 문서를 수정하고 저장할 때마다 생기는 것이다.
예를 들면, 문서를 만들 때 아래와 같이 수정 전 내용을 보관하기 위해 제목을 바꿔서 계속 새롭게 저장해서 파일을 만든다.

Git_초안.pdf > Git_ver.1.0.pdf > Git_최종.pdf > Git_최종_진짜최종.pdf

개발을 하다보면 많은 경우 몇십명의 개발자가 협업을 하여 파일을 생성하고, 저장할 때마다 파일을 새로 저장한다고 하면 엄청난 파일이 쌓일 것이다.
파일으 다른 이름으로 저장해 버전을 만드는 방법보다 쉽고 빠르게 버전을 만들고 만든 시간과 수정 내용까지 기록할 수 있는게 바로 git과 같은 버전 관리 시스템이다.

Git에서는 버전을 관리하면 원래 파일 이름은 그래도 유지하면서 파일에서 무엇을 변경했는지를 변경 시점마다 저장할 수 있다.

또, 각 버전마다 작업했던 내용을 확인할 수 있고 그 버전으로 되돌아갈 수도 있다.

스테이지와 커밋

작업 트리
작업 트리(working tree)는 파일 수정, 저장 등의 작업을 하는 디렉터리로 앞에서 만들었던 (https://devmango.tistory.com/112) git-test 디렉터리가 작업 트리가 된다. 즉 우리 눈에 보이는 디렉터리가 바로 작업 트리이다.

스테이지
스테이지(stage)는 버전으로 만들 파일이 대기하는 곳이다. 스테이징 영역(staging area)이라고 부르기도 한다.
즉, 10개의 파일을 수정했는데 4개의 파일만 버전으로 만들려면 4개의 파일만 스테이지로 넘겨주면 된다.

저장소
저장소(repository)는 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳이다.

* stage 내용은 .git/index 파일에 저장되고, 저장소의 내용은 .git/HEAD 파일에 저장된다.

결론 : 작업 트리에서 문서를 수정 > 수정한 파일 중 버전으로 만들고 싶은 것을 스테이징 영역에 저장 > 스테이지에 있던 파일을 저장소로 커밋

깃 상태 확인하기

git status

`

1) on branch master : 현재 master 브랜치에 있다.
2) no commits yet : 아직 커밋한 파일이 없다.
3) nothing to commit : 현재 커밋할 파일이 없다.

파일 생성 후 깃 상태 확인하기

1) 내용이 1인 test.txt 파일을 생성해준다.
(vim 사용법 모르는 분들은 https://devmango.tistory.com/111 참고)

vim test.txt

2) 파일 생성 후 git status를 입력한다. untracked files 가 있다고 표시되는데, 아직 한번도 버전 관리하지 않은 파일을 untracked files라고 부른다.

수정한 파일을 스테이징하기 - git add

* 스테이징 내용을 .git/index 파일에 저장하기 때문에 스테이지에 올리는 것을 '인덱스에 등록한다'라고 표현하기도 한다.

git에서 스테이징할 때 사용하는 명령어는 git add 이다.

git add test.txt
git status

test.txt 파일을 add 해준 뒤 status 명령어로 상태를 확인한다.

'untracked files:' 라는 문구가 'Changes to be committed:' 로 바뀌고 text.txt 파일앞에 'new file:' 이라는 수식어가 추가로 나타났다.  새 파일 test.txt를 (추후) 커밋할 것이다.' 라는 뜻이다.
해당 작업을 함으로써 수정한 파일 test.txt 파일이 스테이지에 추가되었다.

스테이지 파일 커밋하기 -git commit

git commit -m "commit message"
git status

커밋 후 파일 1개가 변경되었고, 파일에 1개의 내용이 추가되었다고 나타난다. 스테이지에 있던 test.txt 파일이 저장소에 추가됐다.
그리고 git status를 입력해보면 버전으로 만들 파일이 없고(nothing to commit) 작업 트리도 수정사항 없이 깨끗하다(working tree clean)이라고 표시된다.

저장소에 저장된 버전을 확인 - git log

git log

커밋을 한 사람, 시간, 메세지가 함게 나타난다.

스테이징과 커밋을 한꺼번에 처리하기 - git commit -am

git commit -am "commit message"

 

반응형

댓글