깃 & 깃허브 입문2020. 2. 4. 14:21
728x90

저번 시간에 깃의 기본 기능에 대해 배웠습니다!

기억이 안나시는 분은 아래 글을 참고하세요:)

https://mminky.tistory.com/5

 

[CH 01] 깃 시작하기

오늘부터 Do it!시리즈 깃 & 깃허브 입문 책으로 깃을 공부해볼까 합니다! https://book.naver.com/bookdb/book_detail.nhn?bid=15910099 Do it! 지옥에서 온 관리자 깃&깃허브 입문 생활코딩 강의에서 52개를 엄..

mminky.tistory.com

오늘은 깃의 버전관리에 대해 배워보겠습니다.

 

-----------------------------------------------------------------------------------------------------------------------------------

 

우선 버전관리를 위해서는 버전을 저장할 수 있는 저장소를 만들어야 합니다.

저장소를 만든 디렉터리에서 파일의 버전관리를 할 수 있습니다.

 

1) 버전관리를 위한 준비

git디렉터리(저장소) 만들기

  $ mkdir git-storage

     : 깃 저장소를 만들 디렉터리 생성

  $ cd git-storage

     : 만든 디렉터리(git-storage)로 이동

  $ git init

     : 깃을 이용할 수 있게끔 디렉터리 초기화

       ( Initialized empty Git repository in ~ 는 이제 깃을 이용할 수 있다는 뜻 입니다.)

  $ ls -la

     : 상세정보(l), 숨김파일(a) 표시

      git init 이후에 .git/ 디렉터리가 생성된 것을 볼 수 있습니다. 이 디렉터리가 바로 '저장소(repository)' 입니다.

 

2) 작업트리, 스테이지, 저장소

작업 트리, 스테이지, 저장소를 그림으로 나타내면 다음과 같습니다.

git 디렉터리

작업트리 : 파일 수정, 저장을 하는 디렉터리

스테이지 : 버전으로 만들 파일이 대기하는 곳

저장소 : 스테이지의 파일들을 버전으로 만들어 저장하는 곳

 

우리가 a, b, c, d파일을 만들면 위 그림처럼 작업트리에 a.txt, b.txt, c.txt, d.txt파일이 생성됩니다.

그 중 커밋하고 싶은(버전으로 만들고 싶은) a.txt를 골라 커밋합니다. git add a.txt

git commit 을 하면 스테이지에 방금 올린 a.txt 뿐만 아니라 기존에 스테이지에 있던 e, f까지 한 번에 커밋이 됩니다.저저장소로 커밋된 a, e, f는 버전으로 만들어집니다.

 

3) 깃의 상태

  $ git status

 

  - 작업트리에 아무 파일도 없을 때

작업트리가 비어있을 때

On branch master : master 브랜치에 있습니다. (CH03에 브랜치에 대한 설명이 있습니다.)

No commits yet : 아직 커밋한 파일 이 없습니다.

nothing to commit : 커밋 할 파일이 없습니다.

 

 

  - 작업트리에 파일 생성

  이번에는 작업트리인 git-storage(위에서 만든 디렉터리)에 filename.txt를 만들어 보겠습니다.

filename.txt 생성

키보드의 ' I '나 ' A '를 눌러 --끼워넣기--모드로 바꾼 후 내용을 입력합니다.

파일 내용 입력

'Esc'키를 눌러 ex모드로 변환한 후 ' :wq '를 입력해 저장종료합니다. (기억안나면 CH01 복습!!)

On branch master

No commits yet

Untracked files: filename.txt

nothing added to commit but untracked files present

커밋한 것은 없지만 Untracked file(버전관리 한 번도 안 한 파일)이 존재한다. -> filename.txt를 뜻하겠죠?

작업트리에 파일이 생김

현재 상황은 위 그림과 같이 작업트리에 filename.txt가 생겼습니다.

 

  - 스테이징(Staging)

  작업트리에 있는 파일을 스테이지로 올리는 과정을 스테이징 이라고 합니다.

 

  $ git add 파일명

git add로 스테이징 하기

warning: LF will be replaced by CRLF in filename.txt.

라는 경고가 뜹니다.

Git Bash에서 리눅스를 기반으로 합니다. 이 경고는 윈도우의 줄바꿈 문자(CR LF)와 리눅스의 줄바꿈 문자(LF)가 다르기 때문에 발생합니다. (맥은 LF이기 때문에 발생하지 않습니다.)

LF가 CRLF로 대체된다고 하네요. (책에서는 반대로 말하는데 뭐가 맞는건진 모르겠어요)

하지만 우리가 해야할 건 없습니다!

작업트리에 파일이 생성되었을 때

Changes to be committed:

   new file: filename.txt

새 파일인 filename.txt를 커밋할 준비가 되었다.

(취소하려면 git rm 명령어 이용)

Staging

스테이징을 그림으로 나타내면 위와 같다.

 

  - 커밋(Commit)

   $ git commit

git commit

이때, 커밋에 메시지를 넣고 싶다면

$ git commit -m "메시지내용" 이렇게 입력합니다.

결과창에 1 file changed, 1 insertion이라고 표시됩니다.

파일 1개가 변경되었고 1개의 내용이 추가되었다는 내용입니다.

git 상태

이 때의 git 상태를 보면 nothing to commit, working tree clean 입니다.

즉 commit 할 것이 없고 작업트리도 수정할 것 없이 깨끗하다라는 뜻 입니다.

commit

커밋을 하면 스테이지에 있던 filename.txt의 버전이 저장소에 생성됩니다.

 

$ git log

저장소에 저장된 버전 확인

git log

git log를 하면 first_message라고 입력했던 커밋을 통해 버전이 만들어졌다는 것을 알 수 있습니다.

 

$ git log --stat

git log --stat

git log 뒤에 --stat을 붙이면 커밋 관련 파일이 표시됩니다.

filename.txt | 1 + 이라는 메시지를 통해 filename.txt파일이 커밋되었음을 알 수 있습니다.

 

$ git commit -am

commit 뒤에 -am을 붙이면 스테이징과 커밋을 한 번에 처리합니다.

메시지를 붙이고 싶다면 $ git commit -am "메시지내용" 를 입력하면 됩니다.

 

4) 파일의 상태

  - tracked & untracked

   tracked : 한 번 이라도 커밋 된 파일

    깃은 한 번이라도 커밋 된 파일의 수정 여부를 계속 추적(track)합니다.

    이런 파일은 수정 후 git status를 확인하면 modified: 라고 표시됩니다.

 

   untracked : 한 번도 커밋되지 않은 파일

    이 파일의 경우 untracked files: 라고 표시 됩니다.

 

5) 작업취소

$ git checkout -- filename.txt

작업 트리에서 작업을 되돌리는 명령어 입니다. checkout으로 되돌린 내용은 복구할 수 없습니다.

 

$ git reset HEAD filename.txt

스테이징을 취소하는 명령어 입니다. 뒤에 파일명(filename.txt)을 입력하지 않으면

모든 파일의 스테이징을 취소합니다.

 

$ git reset HEAD^

가장 마지막에 한 커밋을 취소합니다. 동시에 스테이징도 취소되고 작업트리에만 남게 됩니다.

최근 2개의 커밋을 취소하려면 $ git reset HEAD~2 를 입력하면 됩니다.

 

 

 

------------------------------------------------------------------------------------------------------

본 글은 Do it! 깃&깃허브 입문 책을 참고하여 작성하였습니다.

https://book.naver.com/bookdb/book_detail.nhn?bid=15910099

반응형
Posted by mminky