본문 바로가기
Tools/GIT & Git Hub

[Git] 깃으로 버전 관리하기 / 저장소 만들기 / 버전 만들기 (스테이지, 커밋)

by EunjiBest 2022. 4. 10.

[Git] 깃으로 버전 관리하기 / 저장소 만들기 / 버전 만들기

 

 

 

오늘의 실습은 Mac을 사용해서 하겠습니다!

어짜피 운영체제와 상관없이 리눅스 방식의 명령을 사용하기 때문에, 

큰 상관없이 따라오실 수 있어요~

 

 

 

깃에서 버전이란?

 

깃에서 가장 중요한 기본이자, 중요한 기능이 버전을 관리하는 것이다.

 

깃에서 문서를 수정할 때마다 간단한 메모와 함께 수정 내용을 스냅샷으로 찍어서 저장한하는 것을 '버전'이라고 한다.

깃의 버전 관리 방법을 잘 이해해 두어야 앞으로 배울 깃의 백업 기능이나 협업 기능도 이해할 수 있다.

 

 

깃 저장소 만들기

 

저장소를 만들고 싶은 디렉터리로 이동해서 깃을 초기화하면 그때부터

해당 디렉터리에 있는 파일들의 버전관리가 가능하다.

 

1. 깃 초기화 하기 git init

 

$ mkdir hello-git
$ cd hello-git

 

먼저 홈 디렉터리에서 hello-git이라는 디렉터리를 만들고

cd 명령을 사용해서 hello-git 디렉터리로 이동한다.

 

 

hello-git 안의 내용을 보기 위해

 

$ls -la

 

명령어를 입력하면 두줄 짜리 결과가 나온다.

 

 

.이 하나인 항목은 현재 디렉터리를 나타낸다.

.이 두개인 항목은 상위 디렉터리를 나타낸다.

 

아직 아무것도 안만들었으니 당연히 파일은 하나도 없다.

 

이 디렉터리에 저장소를 만들기 위해서 깃에 git init라는 명령을 입력할 것이다.

참고로 init는 initalize라는 초기화 하다는 뜻의 줄임말이다.!

이렇게 어원(?)을 알면 좀 잘 외워진다.

 

$ git init

 

가장 아래처럼

Initialized empty Git repository in /Users/~~~~~~~~~

이런 문구가 나오면

이제부터 해당 디렉터리에서 깃을 사용할 수 있다.

 

 

마지막으로

 

$ls -la

 

위 코드를 활용해서 디렉터리 안의 내용을 확인해보자.

 

 

아까와 다르게

.git이라는 디렉터리가 하나 더 생겨있다.

이제 이 디렉터리가 깃을 사용하면서 버전이 저장될 '저장소(repository)'이다.

 

 

 

버전 만들기

 

깃에서 버전관리를 하면 원래 파일 이름은 그대로 유지하면서 파일에 무엇을 변경했는지를 변경 시점마다 저장할 수 있다.

또한 각 버전마다 작업했던 내용들을 확인할 수 있고,

그 버전으로 되돌아갈 수 있는 아주 이쁜 친구이다.

 

1. 스테이지와 커밋의 이해

 

그럼 어떻게? 파일 이름은 그대로 유지하면서 수정 내역을 기록하는 것일까?

 

- 작업트리(working tree) : 파일 수정 저장 등 작업을 하는 디렉터리. (앞에서는 hello-git 디렉터리) 즉, 우리 눈에 보임

- 스테이지(stage) : 버전으로 만들 파일이 대기하는 곳. 작업트리에서 10개의 파일을 수정했는데, 4개의 파일만 버전으로 만들려면 4개의 파일만 스테이지로 넘져줄 수 있다. (눈에 보이지 않음)-> .git/index 파일에 저장

-저장소(repository) : 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳. (눈에 보이지 않음) -> .git/HEAD 파일에 저장

 

스테이지와 저장소는 깃을 초기화 했을 때, 만들어지는 .git 디렉터리 안에 숨은 파일 형태로 존재한다.

 

완벽한 이해를 위해서 예를 들어보자.

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

그리고 수정한 hello.txt 파일을 버전으로 만들고 싶을 때 스테이지에 넣는다.

 

 

스테이지에 다 넣었다면, 버전을 만들기 위해서 .commit 이라는 명령을 한다.

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

 

 

정리를 해보자면

 

작업트리 -> 수정하는 문서.

스테이지 -> 버전으로 만들고 싶은 문서.

저장소 -> 스테이지에 있던 문서를 커밋해서 버전으로 만듬.

 

 

 

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

 

hello-git 디렉터리까지 이동한 후

 

$ git status

 

 

그럼 다음과 같이 3줄이 뜬다.

① On branch master : 현재 master 브랜치에 있다.

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

③ Nothing to commit : 현재 커밋할 파일이 없다.

 

라는 뜻을 가지고있다. 

간단한 영어로 써있기 때문에 이런 의미구나 하고 넘어가면 된다.

 

다음은 hello-git에 새로운 txt파일을 만들어보자.

 

$vim hello.txt

 

처음에는 ex모드로 열려서 입력을 할 수 없기 때문에

키보드 I 나 A를 눌러서 입력모드로 전환해준다.

 

입력모드로 전환하고 숫자 1을 입력, 

esc를 눌러 다시 ex모드로 전환,

:wq를 입력 (w는 저장 q는 종료 라는 뜻),

엔터.

하면

다시 터미널 창으로 돌아와진다.

 

터미널 창에 돌아와서

 

$ls -la

 

 

방금 만든 hello.txt 파일이 디렉터리안에 추가된 것을 확인할 수 있다.

 

깃 상태를 확인해보자

 

$git status

 

아까와 다르게

branch master에 hello.txt라는 untracked files(한번도 관리하지 않은 파일)이 있다고 뜬다.

 

지금까지 한 작업을 그림으로 나타내면 

이렇게 표현할 수 있다.

 

 

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

 

작업 트리에서 파일을 만들었늬, 스테이지에 수정한 파일을 추가할 차례이다.

이렇게 버전을 만들 준비를 하라고 알려주는 것을 '스테이징'이라고 한다.

 

 

git add 명령어는 스테이징할 때 사용하는 명령어이다.

 

$ git add hello.txt

 

터미널에 아무 내용도 뜨지 않지만

다시 git의 상태를 확인해보면

 

$ git status

 

 

untracked files: 라고 떴던 문구가

changes to be commiteed: 로 바뀐 것을 확인할 수 있다.

또한 hello.txt 파일 앞에 new file:이라는 수식어가 추가로 붙었다.

 

이는 새파일 hello.txt를 커밋할 예정이다. 라는 뜻이다.

 

이렇게 수정한 파일 hello.txt가 스테이지에 추가되었고

그림으로 나타내면 다음과 같다.

 

 

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

 

스테이지에 파일을 올렸으니 버전을 만들 수 있게되었다.

이를 커밋(commit)한다라고 말한다.

 

이때, 그 버전에 어떤 변경사항이 이썼는지 확인을 위해서 메세지를 함께 기록해두어야한다.

 

git commit이라는 명령어에 한 칸 띄운 후 -m 옵션을 붙이면

커밋과 함께 저장할 메세리를 적을 수 있다.

 

$ git commit -m "message1"

 

결과 메세지를 보면

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

스테이지에 있던 hello.txt 파일이 저장소에 추가 된 것이다.

 

$git status로 현재 깃 상태를 확인해보자.

 

 

버전으로 만들 파일이 없고, 작업트리도 깨끗하다.라는 문구가 뜬다.

 

 

버전이 제대로 만들어졌는지 확인을 해보자.

 

$git log

커밋을 만든사람, 만든 시간과 메세지가 함께 전달된다.

수정한 파일을 컷하면 이처럼 수정과 관련한 여러정보들을 함께 저장할 수 있고

필요할 때 확인이 가능하다.

 

여기까지 버전을 만드는 법이였다.

 

 

스테이징과 커밋 한번에 하기 

 

추가로 스테이징과 커밋을 한번에 처리하는 법이 있다.

이 방법은 한 번이라도 커밋한 적 있는 파일을 다시 커밋할 때에만 활요할 수 있다.

 

$ vim hello.txt

 

빔에서 hello.txt 파일을 열고

I나 A를 눌러 쓰기 모드로 전환후 숫자 2를 추가한다.

esc를 누리고 :wq를 입력하여 편집기를 종료한다.

 

 

이미 한 번 커밋한 파일이라면 다음 명령어로 스테이징과 커밋을 한번에 처리할 수 있다.

 

$git commit -am "message2"

 

방금 커밋한 버전에 어떤 정보가 들어있는지 확인해보자.

 

$git log

 

 

수정한 hello.txt를 저장한 두 번째 버전의 정보가 message2라는 메세지와 함께 나타난다.

 

 

 

 

이렇게해서

깃의 가장 기본적인 버전을 만들어보았다.

 

살짝 분량조절 실패로 포스팅이 길어진것같다.ㅎㅎ

이걸 또 언제 외우냐 하는 생각이 들지만

앞으로 많이 반복하다보면 눈감고도 칠수 있는 날이 왔으면 좋겠다.ㅎ

 

반응형

댓글