본문 바로가기
GIT

GIT 생성

by 두잇베스트 2021. 2. 16.

GIT 의 시작

2021-02-16_18-21-49

 

일단 아무것도 없는 파일을 하나 만들었다. 그리고 hello-git 이라는 파일을 GIT으로 버전 관리하기로 정했다.

 

 

2021-02-16_18-22-46

 

GIT에게 버전관리를 시키기 위해서는 git init . 사용해야한다.

init은 초기화를 의미하며, . 은 현재 디렉토리를 의미한다.

그리고 새롭게 이전에 없었던 .git이라는 파일이 하나 생겼는데, 이 파일을 들어가보면

 

2021-02-16_18-24-11

 

HEAD, branches를 비롯해 여러 파일들이 생겨났다. 즉, GIT은 버전관리를 통한 여러 변경사항 등의 정보를

.git 이라는 파일에서 관리한다는 의미이다.

 

 

GIT의 세가지 영역

2021-02-16_18-25-04

 

git directory 는 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳으로, 위에서 말했던 .git 파일을 말하기도 한다. commit을 통해서 이 파일을 버전을 만들어서 관리하도록 한다.
staging area는 index라고도 불리지만, 현재는 staging area로 많이 불리기도 한다. 이 영역은 커밋 대기 상태이며, 커밋할 파일에 대한 정보를 저장한다. 이 영역이 가장 중요한점은 add라는 명령어를 통해서 stage해서 커밋할 스냅샷을 만든다는것이다. 모든 파일을 추가할수도 있으며, 선택적으로 추가하여 자기가 원하는 파일을 staging 상태로 만들 수 있다.
working directory 우리가 현재 작업하는 디렉토리를 의미한다.

 

말로 하면 이해가 잘 안갈것이다. 코드로 보자.

 

2021-02-16_18-30-35

 

일단 1이 쓰여진 hello.txt 파일을 만들었다. 여기서 git status git 상태를 알려주는 명령어를 사용했다. On branch master 이 브런치는 master 브런치를 의미한다. (master 브런치는 기본적으로 생성되는 디폴트 브런치이다) . No commits yet은 아직 커밋이 되지 않은 상태를 의미하며 ( git에서 버전 관리를 하지 않는 상태). Untracked는 추적되지 않는 상태, 즉 git이 아직 관리하고 있지 않는 파일을 의미한다.

그래서 버전으로 관리하기 위한 상태를 만들기 위해서는

 

2021-02-16_18-30-10

 

git add 라는 명령어를 통해서 위에서 말했던 staging상태로 올린것이다. 그리고 그림에서 보여지는 Changes to be committed:는 버전이 될 파일들의 목록을 보여준다. 그래서 hello.txt 파일은 커밋 대기 상태가 되버린것이다.

 

 

2021-02-16_18-29-40

 

git commit -m 을 통해서 버전을 만든다. -m은 커밋 메세지를 남기는 것.
그리고 git 의 상태를 보면, nothing to commit, working tree clean 커밋할 파일들이 없으며 , 워킹 디렉토리가 깨끗하다는 것을 의미한다. 즉 커밋이 잘됐다는 것을 의미한다. 커밋이 잘됐는지 확인하려면 git log를 통해서 확인

 

 

2021-02-16_18-29-03

 

그리고 이 상태에서 파일에 수정을 하게 되면,

 

 

2021-02-16_18-28-30

 

hello.txt 파일을 현재 작업중인 파일로 , working directory에 위치하게 된다. 그래서 위에서 알수있듯이, 커밋을 위한 staging 상태가 아니라고 알려준다. 그리고 이 파일을 다시 버전 관리를 하기 위해서는 git add, git commit 을 반복하면 된다.

보통 커밋을 위한 과정으로 git add -> git commit 을 수행하게 된다. 그러나 이 과정이 귀찮을수도 있다. 그래서 이 과정을 합친 명령어로 git commit -am 이 있는데 , -a는 add 명령어를 사용하지 않고 수정된 파일에 대해 add와 commit을 수행한다. ( 단 한번도 add 되지 않는 파일은 add을 한번더 해줘야한다. -m은 인라인으로 커밋 메시지 작성을 의미

 

 

여러개의 파일을 하나의 버전으로

2021-02-16_18-28-05

 

우선 기존의 hello.txt 파일은 변경시키고 , 새로운 hello2.txt를 만든 모습니다. 위의 사진에서 git status를 본다면 , modified: hello.txtUntracked files: hello2.txt 알려주고 있다.
이유 ? 바로 hello.txt 파일은 1회 이상 git으로 관리했기 때문에 , git은 여전히 hello.txt파일을 관리하고 있는것이다. 그러는 이유로 hello2.txt 파일을 새로운 파일이고 git으로 관리한적이 없어서 Untracked files로 지정된 것이다.

 

 

2021-02-16_18-27-43

 

git 버전 관리를 위해 staging area에 올리기 위해서는 git add를 통해서 올리면 된다. 그리고 결과적으로 Changes to be committed를 통해 커밋할 준비가 되어있는것을 볼 수 있다.

 

 

2021-02-16_18-27-18

 

git log -stat을 통해서 각각의 커밋마다 어떤 파일들이 연류되어 있는지를 알 수 있게 해준다. hello.txt | 1+ 는 hello.txt 파일에 1줄이 추가되었다는것을 알려주는 것이다.

정리

git init : initialize repository
.git : git repository
git status : working tree status
git add : add to staging area
git commit : create version
git log : show version
git log --stat : show files in version


Reference

버전의 생성 - 생활코딩

'GIT' 카테고리의 다른 글

GIT 6 - Merge & Conflict  (0) 2021.02.17
GIT 5 - branch  (0) 2021.02.17
GIT 4 - reset & revert  (0) 2021.02.17
GIT2 - 버전간의 차이점  (0) 2021.02.17
GIT 3 - checkout  (0) 2021.02.17

댓글