GIT 의 시작
일단 아무것도 없는 파일을 하나 만들었다. 그리고 hello-git
이라는 파일을 GIT으로 버전 관리하기로 정했다.
GIT에게 버전관리를 시키기 위해서는 git init .
사용해야한다.
init은 초기화를 의미하며, . 은 현재 디렉토리를 의미한다.
그리고 새롭게 이전에 없었던 .git이라는 파일이 하나 생겼는데, 이 파일을 들어가보면
HEAD, branches를 비롯해 여러 파일들이 생겨났다. 즉, GIT은 버전관리를 통한 여러 변경사항 등의 정보를
.git 이라는 파일에서 관리한다는 의미이다.
GIT의 세가지 영역
git directory 는 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳으로, 위에서 말했던 .git 파일을 말하기도 한다. commit
을 통해서 이 파일을 버전을 만들어서 관리하도록 한다.
staging area는 index라고도 불리지만, 현재는 staging area로 많이 불리기도 한다. 이 영역은 커밋 대기 상태이며, 커밋할 파일에 대한 정보를 저장한다. 이 영역이 가장 중요한점은 add
라는 명령어를 통해서 stage해서 커밋할 스냅샷을 만든다는것이다. 모든 파일을 추가할수도 있으며, 선택적으로 추가하여 자기가 원하는 파일을 staging 상태로 만들 수 있다.
working directory 우리가 현재 작업하는 디렉토리를 의미한다.
말로 하면 이해가 잘 안갈것이다. 코드로 보자.
일단 1이 쓰여진 hello.txt 파일을 만들었다. 여기서 git status
git 상태를 알려주는 명령어를 사용했다. On branch master 이 브런치는 master 브런치를 의미한다. (master 브런치는 기본적으로 생성되는 디폴트 브런치이다) . No commits yet은 아직 커밋이 되지 않은 상태를 의미하며 ( git에서 버전 관리를 하지 않는 상태). Untracked는 추적되지 않는 상태, 즉 git이 아직 관리하고 있지 않는 파일을 의미한다.
그래서 버전으로 관리하기 위한 상태를 만들기 위해서는
git add
라는 명령어를 통해서 위에서 말했던 staging상태로 올린것이다. 그리고 그림에서 보여지는 Changes to be committed:는 버전이 될 파일들의 목록을 보여준다. 그래서 hello.txt 파일은 커밋 대기 상태가 되버린것이다.
git commit -m
을 통해서 버전을 만든다. -m
은 커밋 메세지를 남기는 것.
그리고 git 의 상태를 보면, nothing to commit, working tree clean 커밋할 파일들이 없으며 , 워킹 디렉토리가 깨끗하다는 것을 의미한다. 즉 커밋이 잘됐다는 것을 의미한다. 커밋이 잘됐는지 확인하려면 git log
를 통해서 확인
그리고 이 상태에서 파일에 수정을 하게 되면,
hello.txt 파일을 현재 작업중인 파일로 , working directory에 위치하게 된다. 그래서 위에서 알수있듯이, 커밋을 위한 staging 상태가 아니라고 알려준다. 그리고 이 파일을 다시 버전 관리를 하기 위해서는 git add
, git commit
을 반복하면 된다.
보통 커밋을 위한 과정으로 git add -> git commit 을 수행하게 된다. 그러나 이 과정이 귀찮을수도 있다. 그래서 이 과정을 합친 명령어로
git commit -am
이 있는데 , -a는 add 명령어를 사용하지 않고 수정된 파일에 대해 add와 commit을 수행한다. ( 단 한번도 add 되지 않는 파일은 add을 한번더 해줘야한다. -m은 인라인으로 커밋 메시지 작성을 의미
여러개의 파일을 하나의 버전으로
우선 기존의 hello.txt 파일은 변경시키고 , 새로운 hello2.txt를 만든 모습니다. 위의 사진에서 git status
를 본다면 , modified: hello.txt
와 Untracked files: hello2.txt
알려주고 있다.
이유 ? 바로 hello.txt 파일은 1회 이상 git으로 관리했기 때문에 , git은 여전히 hello.txt파일을 관리하고 있는것이다. 그러는 이유로 hello2.txt 파일을 새로운 파일이고 git으로 관리한적이 없어서 Untracked files
로 지정된 것이다.
git 버전 관리를 위해 staging area에 올리기 위해서는 git add
를 통해서 올리면 된다. 그리고 결과적으로 Changes to be committed
를 통해 커밋할 준비가 되어있는것을 볼 수 있다.
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 |
댓글