글쓰는 개발자

[Git]Git-CLI 버전관리 with 생활코딩 - 2.버전 생성하기 본문

Development/Software Engineering

[Git]Git-CLI 버전관리 with 생활코딩 - 2.버전 생성하기

개발하자 2019. 4. 14. 12:09

git의 기본 세팅이 끝났으니, 이제 본격적으로 사용해 볼 단계이다.

그전에, 미리 알아두어야 할 개념이 있다. 다음 사진을 보자.

위의 Working Tree, Staging Area, Repository는 git이 파일을 추적하는데 필요로 하는 3가지 추상적 공간을 나타낸다.

gitStudy 폴더 모형은 현재 우리가 작업중인 디렉토리를 나타낸다.

우리의 작업내용은 Working Tree -> Staging Area -> Repository 순서로 '버전화' 되어간다. 무슨 말인지 조금 더 살펴보자.

 

먼저 Working Tree에서는 디렉토리 내부 작업의 수정사항을 추적한다.

예를들어 디렉토리 gtiStudy의 File1을 열어 'ABC'라는 내용을 작성하고 File2를 열어 '123'이라는 내용을 작성하면

File1File2는 Working Tree에 등록된다. 변경사항이 있는 파일들이 등록된 것이다.

사용자는 이러한 변경사항들중 원하는 것들만을 선택하여 다시 Staging Area에 등록한다.

변경사항을 버전화시키기 위한 준비단계에 돌입했다.

버전화를 위한 모든 준비가 완료되면, 다시말해 Staging Area에 모든 변경사항을 등록하고 나면

사용자는 Staging Area에 있는 파일들을 한 번에 묶어 Repository에 본인이 원하는 이름을 붙여 하나의 버전으로 등록한다.

 

그림으로 나타내면 다음과 같다.(발퀄 죄송합니다..)

File1File2가 version1이라는 이름으로 버전화 되어 Repository에 저장된 모습이다.

Repository는 사용자의 모든 활동들을 하나의 Version이라는 상위 개념으로 묶어 저장해주는 공간이다.

위의 과정을 반복하여 Version2, Version3, ... 을 만들어 갈 수 있는 것이다. 물론 버전 네이밍은 자유다.

 

그렇다면 이제 실제로 해보는 것만이 남았다.

.git이 설치된 디렉토리(작성자의 경우 gitStudy)로 이동하여 실제로 파일을 만들어보자.

 

File1.txt와 File2.txt를 생성하고, git status를 입력해보자.

$ ll
total 12
drwxrwsr-x 3 cabox www-data 4096 Apr 13 22:25 ./
drwxrwsr-x 6 cabox www-data 4096 Apr 13 07:26 ../
-rw-r--r-- 1 cabox www-data    0 Apr 13 22:25 File1.txt
-rw-r--r-- 1 cabox www-data    0 Apr 13 22:25 File2.txt
drwxrwsr-x 7 cabox www-data 4096 Apr 13 07:36 .git/

$ git status
On branch master

No commits yet

Untracked files:
  (use "git add ..." to include in what will be committed)

        File1.txt
        File2.txt

nothing added to commit but untracked files present (use "git add" to track)

git status를 입력하면, 위와 같이 Untracked files의 목록에 File1과 File2가 존재한다.

아직 버전을 아무것도 만들지 않았으므로 File1과 File2가 생성되었다는 것만이 Working Tree에 나타나는 것이다.

버전을 만들지 않은것뿐이지, git에 의해 추적은 계속되고 있는 상태이다.

이제 두 파일을 Staging Area에 등록해보자.

Working Tree에 있는 변경사항들을 Staging Area에 등록하는 명령어는 git add+[파일명]이다.

$ git add File1.txt File2.txt
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached ..." to unstage)

        new file:   File1.txt
        new file:   File2.txt

파일이 Staging Area에 등록되었다.

Untracked files에서 new file로 항목이 변경되었음을 볼 수 있다.

이제 이것을 다시 Repository에 넣어주면, Version1을 만들 수 있다!

버전을 Repository에 등록하는 명령어는 git commit [파일명]이다.

-m 옵션을 추가해주면 별도의 과정없이 바로 버전을 등록할 수 있다.

$ git commit -m "Version1"
[master (root-commit) bd66197] Version1
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 File1.txt
 create mode 100644 File2.txt

위의 메시지가 출력되면 Repository에 성공적으로 버전이 만들어진 것이다.

메시지를 살펴보면, 2개의 file이 변화했다는 것을 알 수 있다.

버전이 등록되었으니, 어떻게 관리되고 있는지 살펴보자.

$ git log
commit bd6619777b4bfe7ccb31851714ffaeae312df350 (HEAD -> master)
Author: ...
Date:   Sat Apr 13 22:43:34 2019 -0400

    Version1

Version1이 성공적으로 등록된 것이 보인다. (개인정보가 포함된 내용은 ...으로 처리하였습니다.)

그런데 정확히 무슨 수정사항이 있었는지는 출력되지가 않는다.

git log에 --stat 옵션을 추가하여 어떤 수정사항이 있었는지 살펴보자.

 

$ git log --stat
commit bd6619777b4bfe7ccb31851714ffaeae312df350 (HEAD -> master)
Author: ...
Date:   Sat Apr 13 22:43:34 2019 -0400

    Version1

 File1.txt | 0
 File2.txt | 0
 2 files changed, 0 insertions(+), 0 deletions(-)

Amazing!!

File1과 File2가 성공적으로 등록되어 Version1이라는 이름으로 관리되고 있다.

이로써 Version을 만드는것에 성공했다. 위의 과정을 그림으로 보면 다음과 같다.

 

git add를 통해 Working Tree의 파일들중 원하는것을 선택하여 Staging Area에 등록하고,

git commit을 통해 Staging Area에 등록된 내역들을 버전화하여 Repository에 저장한다.

 

여기까지가 git을 통해 버전을 생성하는 내용이다.

그런데 단순히 저장만 해서는 이것이 왜 필요한지 알 수가 없다.

변경사항을 기록해서 버전을 만들었으면, 각 버전을 활용할 수 있어야 버전의 의미가 있다.

또한 버전이 쌓여가면서, 각 버전간에 어떤 차이점이 있는지 알 수 있다면 정말 좋지 않을까.

그러므로 다음 포스팅에서는 여러가지 버전을 만들고, 버전들간의 차이점을 살펴보고 또 원하는 버전으로 시간여행하는 방법을 살펴보겠다.

 

 

[git 명령어 정리]

 

git init git을 사용할 디렉토리를 초기화(지정)한다.
git status Working Tree의 내용을 출력한다.
git add 파일을 Staging Area에 추가한다.
git commit Staging Area의 파일들을 Repository에 추가한다.(버전화)
git log 지금까지의 버전들을 살펴본다.

자료 출처

생활코딩 GIT2 - CLI 버전관리 버전만들기

반응형
Comments