깃에서의 버전이란?

- 문서를 수정할 때마다 간단한 메모와 함께 수정 내용을 저장하는 것

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

 

목표

- 수정한 문서 내용을 버전으로 저장하는 것

- 저장한 버전을 이용해 이전 버전으로 되돌리는 것

 

Step1. 깃 저장소 만들기(깃 초기화)

- 깃의 기본 개념을 익히기 위해, 사용자의 컴퓨터에 저장소를 만든다.

- 저장소를 만들고 싶은 디렉토리로 이동, 초기화한 후 그곳에 있는 파일들을 버전 관리한다.

 

   1-1. hello-git 디렉토리를 생성한 후, 디렉토리 안의 내용을 살펴본다.

아직 아무것도 만들지 않았기 때문에 파일은 하나도 없다.

   1-2. 깃을 사용할 수 있도록(=저장소를 만들기 위해) 디렉토리를 초기화한다.

Initialized empty Git repository ... 가 뜨면 해당 디렉토리에서 깃을 사용가능하다. 

   1-3. 깃을 사용하면서 버전이 저장될 저장소(repository) .git 확인하기

.git 디렉토리가 생겼다.

   +) 사용자가 실수로 지우지 않도록 .git 디렉토리는 탐색기에 나오지 않는다.(숨긴 파일을 확인)

Step2. 버전 만들기

- 파일을 다른 이름으로 저장해 버전을 만드는 것보다 훨씬 쉽다.

- 원래 파일 이름은 유지하면서 수정 내용, 변경 시점과 변경 내용까지 저장가능하다.

- 이전 버전으로 되돌아갈 수 있다.이러한 시스템을 버전 관리 시스템(ex.깃)이라고 한다.

 

   2-1. 들어가기 전에 (버전 만들기 = 작업 트리 + 스테이징 + 커밋)

      작업 트리(working tree), 작업 디렉터리(working directory) - 눈에 보임 O
      - 파일 수정, 저장 등의 작업을 하는 디렉터리 ex.hello-git 디렉터리
      - 우리 눈에 보이는 디렉터리

 

      스테이지(stage), 스테이징 영역(staging area) - 눈에 보이지 않음 X     

      - 버전으로 만들 파일이 대기하는 곳

      - 작업 트리에서 10개의 파일을 수정했는데, 4개의 파일만 버전으로 만드려면,
         그 4개의 파일만 스테이지로 넘기면 된다.

 

      저장소(repository) - 눈에 보이지 않음 X
      - 저장소에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳

 

      눈에 보이지는 않지만, 깃이 버전을 만드는 과정을 살펴보면,

hello.txt 파일 문서를 수정하고 저장하면 이 파일은 작업 트리에 있게 된다.

버전으로 만들고 싶을 때 hello.txt 파일 문서를 스테이지에 넣는다.

또 다른 파일들도 수정한 후 스테이지에 넣는다.

깃에게 커밋 명령을 내린다.

새로운 버전이 생성되면서 스테이지에서 대기하던 파일들이 모두 저장소에 저장된다.

 

   2-2. 작업 트리에서 vim으로 문서 수정하기

        1) 깃의 상태 확인하기 - git status

             On branch master : 현재 master branch에 있다.

             No commits yet : 아직 commit한 파일이 없다.

             nothing to commit :  현재 commit할 파일이 없다.

        2) vim으로 파일을 편집한다.

[입력 모드] 키보드 'I' 또는 'A' / [ex 모드] 키보드 'Esc'
hello.txt 파일이 생성되었다

        3) 깃의 상태 다시 한 번 확인하기 

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

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

        1) 스테이징(staging), 스테이지에 올린다, 인덱스에 등록한다

            - 스테이지에 수정한 파일을 추가하는 것(깃에게 버전 만들 준비를 하라고 알려주는 것)

            - 스테이징 내용을 .git/index 파일에 저장하는 것(->인덱스에 등록한다)
            경고) 윈도우는 줄이 바뀌는 위치에 CR 문자와 LF 문자가 삽입되고,

                      리눅스와 맥은 그 위치에 LF 문자가 삽입되기 때문에
                      hello.txt의 CRLF 문자를 LF 문자로 변환해서 commit할 것이라는 의미!

        2) 깃 상태 확인하기

            untracked files -> changes to be commited:

            new file : hello.txt
            - 새 파일 hello.txt를 (앞으로) commit할 것이다

   2-4. 스테이지에 올라온 파일 커밋하기 - git commit

        1) 커밋한다

            - 깃에서 버전을 만드는 것

            - 메시지를 함께 기록한다. (커밋할 때 그 버전에 어떤 변경 사항이 있었는지 확인을 위해)

            - 커밋 메시지: 커밋과 함께 저장할 메시지(-m 옵션이 필요하다)

        2) 깃 상태 확인하기

[commit 결과 메시지] 1 files changed, 1 insertion(+)

 파일 1개가 변경되었고, 파일에 1개의 내용이 추가되었다

[status 결과 메시지] nothing to comit, working tree clean

버전으로 만들 파일이 없고, 작업 트리도 수정사항 없이 깨끗하다

        3) 저장소에 저장된 버전 확인하기 git log

            git log

            - 방금 커밋한 버전이 나타난다. 

            - 커밋을 만든 사람, 만든 시간과 커밋 메시지가 함께 나타난다.

   5. 스테이징과 커밋 한번에 처리하기 (3. 스테이징 + 4. 커밋) - git commit -am

        git commit -am

        - 단, 한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때만 사용가능하다.

git commit -a -m "commit message" 명령도 가능하다

확실히 읽으면 진도는 빨리 나가지만, 일일이 캡쳐하면서 하려고 하니 진도가 좀 느린 것 같다..

그래도 힘내자! 꾸준히 열심히!

+ Recent posts