728x90

# 출처 : [도서]Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문(이고잉)


깃에서 버전이란

문서를 수정하고 저장할 때마다 생기는 것.

수정 사항으로 인해 해당 내용을 다른 이름으로 저장할 떄, 다들 이런 경험이 한 번쯤은 해봤을꺼다.

위의 사진처럼 수정 사항을 저장하는 과정에선, 어떤 파일에서 어떤 내용을 수정했는지 기억할 수 없다. 

이를 쉽게 버전을 만들고 만든 시간과 수정 내용까지 기록할 수 있는 것이 바로 깃과 같은 버전 관리 시스템!

 

깃에서 버전을 관리하면,

  • 원래 파일 이름은 그대로 유지하면서 파일에서 무엇을 변경했는지를 변경 시점마다 저장할 수 있다.
  • 각 버전마다 작업했던 내용을 확인할 수 있고, 그 버전으로 되돌아 갈 수 도 있다.

 

깃의 구조

깃에는 가상의 공간(스테이지와 저장소)이 존재한다.

  1. 작업트리(working tree) / 작업 디렉터리(working directory)
    • 파일 수정, 저장 등의 작업을 하는 디렉터리
    • 눈에 보이지 디렉터리가 작업 트리
  2. 스테이지(stage) / 스테이징 영역(staging area)
    • 버전으로 만들 파일이 대기하는 곳
    • 10개의 파일을 수정했지만 4개의 파일만 버전으로 만들고 싶다면, 4개의 파일만 스테이지로 넘겨주면 된다.
  3. 저장소(repository, 리포지토리)
    • 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳
    • 스테이지의 내용은 .git/index 파일에 저장되고, 저장소의 내용은 .git/HEAD 파일에 저장

스테이지와 저장소는 눈에 보이지 않는다.
깃을 초기화할 때 만드어지는 .git 디렉터리안에 숨은 파일 형태로 존재하는 영역이다.
git안에 숨어있는 스테이지와 저장소 영역을 상상하며 깃이 버전을 만드는 과정을 아래에 설명하겠다.

깃이 버전을 만드는 순서

1. 작업 트리에서 문서 수정

2. 수정한 파일 중 버전으로 만들고 싶은 것을 스테이지에 저장

3. 스테이지에 있던 파일을 저장소로 커밋

hello.txt 파일을 수정하고 저장하면, 그 파일은 작업 트리에 있게 된다. 수정한 hello.txt 파일을 버전으로 만들기 위해 스테이지에 넣는다.
깃에서 커밋(commit) 명령을 내리면 새로운 버전이 생성되면서 스테이지에 대기하던 파일이 모두 저장소에 저장된다.


깃 버전 만들기

작업 트리에 문서 파일 생성하기

1. 깃 상태 확인

git status

깃의 상태를 나타내는 메시지가 나타난다.

On branch master 현재 master 브랜치에 있습니다.
No commits yet 아직 커밋한 파일이 없습니다.
nothing to commit 현재 커밋할 파일이 없습니다.

 

2. 새로운 파일 생성 및 저장 & 깃 상태 확인

vim hello.txt
git status

vim hello.txt로 빔 화면에 들어가 hello라는 텍스트를 작성하고 저장했다. cat으로 확인해보면, 다음과 같이 hello로 적은 것을 확인할 수 있다. 그런다음 git status를 입력하여 깃의 상태를 확인해보면, 아까와 다른 메시지를 보여주고 있다.

※ Untracked files : 한번도 버전 관리하지 않은 파일


수정한 파일 스테이징 하기

버전 만들 준비를 하라고 알려주는 것을 '스테이징' 또는 '스테이지에 올린다'라고 표현
스테이징 내용을 .git/index 파일에 저장하기 때문에 스테이지에 올리는 것을 '인덱스에 등록한다'라고도 표현

3. 스테이지에 수정한 파일 추가 및 깃 상태 확인

git add hello.txt
git status

untracked files라는 문구에서 changes to be commited로 변경된 것을 확인할 수 있다.


스테이지에 올라온 파일 커밋하기

4. 커밋하기 및 깃 상태 확인

커밋(commit) : 깃에서 버전을 만드는 것
커밋 시, 그 버전에 어떤 변경 사항이 있었는지 확인하기 위해 메시지를 함께 기록
git commit -m "message1"
git status

git commit -m "message1"에서 message1과 같이 커밋과 함께 저장할 메시지를 적는 내용을 '커밋 메시지'라고 한다.

※ 커밋 후, 결과 메시지를 보면 파일 1개가 변경되었고, 파일에 1개의 내용이 추가되었다고 알려준다.

nothing to commit 버전으로 만들 파일이 없다.
working tree clean 작업 트리에 수정사항이 없다.

 

5. 버전 생성 확인

git log

커밋을 만든 사람(Author), 만든 시간(Date)과 커밋 메시지가 함께 표시


스테이징과 커밋 한꺼번에 처리하기
3, 4번에서 사용한 git add와 git commit을 한번에 사용할 수 있는 명령어가 존재한다.
git commit -am "message1"

 

다음과 같이 -am 옵션을 사용하여 스테이지에 올리고, 커밋하는 과정을 한꺼번에 처리할 수 있다.
(git commit -a -m "message1"으로 사용해도 가능)
단, 한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때만 사용할 수 있다.

 

728x90

+ Recent posts