티스토리 뷰

Chpater02. 깃으로 버전 관리하기

 

 

 

 

02-1. 깃 저장소 만들기

 

깃으로 버전을 관리하려면 폴더 안에 버전이 저장되는 공간이 필요하다.

그 공간을 저장소(repository)라고 한다.

 

 

 

깃 저장소를 만들기 전에 버전을 저장할 공간인 저장소 'hello-git' 디렉터리를 만든다.

그리고 터미널 창에서 cd로 hello-git으로 이동한다.

 

$ cd desktop/hello-git

 

 

 

hello-git디렉터리 안의 내용을 살펴보기 위해 ls-al 명령을 입력한다.

이때 -al 옵션은 숨김 파일이나 디렉터리까지 모두 보여달라는 의미의 옵션이다.

$ ls -al

 

 

 

깃 초기화

hello-git 디렉터리에 저장소를 만들기 위해 git init 명령어를 입력한다.

초기화하여 깃을 사용할 수 있도록 한다.

 

$ git init

 

윈도우에서 hello-git디렉터리를 보면 .git 디렉터리가 만들어진 것을 볼 수 있다.

이때, 원래는 .git 파일이 보이지 않는다.

기본적으로 숨겨져 있기 떄문이다.

이럴 경우 보기 탭에서 숨긴 항목을 체크하면 아래와 같이 볼 수 있다.

 

 

 

 

 

02-2. 버전 만들기

 

깃에서 버전이란 

 

깃에서 버전이란 문서를 수정하고 저장할 때마다 생기는 것이다.

깃에서 버전을 관리하면 우너래 파일 이름은 그대로 유지하면서 파일에서 무엇을 변경했는지를 변경 시점마다 저장할 수 있고 버전마다 작업한 내용을 확인할 수 있어 그 버전으로 되돌릴 수도 있다.

 

 

 

스테이지와 커밋 이해하기

 

깃은 작업 트리, 스테이지, 저장소로 이루어져있다.

 

작업트리

작업 트리(working tree)는 파일 수정, 저장 등의 작업을 하는 디렉터리이다.

작업 디렉터리라고도 하며 이것은 이전에 만들었던 hello-git 디렉터리이다.

 

 

스테이지

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

스테이징 영역이라고도 하며 작업 트리에서 수정한 파일을 커밋하기 위해 스테이지에 넘겨 주어 저장한다.

 

 

저장소

저장소는 리퍼지토리라고도 하며 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장한다. (커밋)

스테이지에 저장이 되어야지만 커밋되어 저장소에 저장된다.

 

 

 

 

 

작업 트리에서 문서 수정하기

 

 

 

hello-git 디렉터리를 깃에서 초기화하고 버전관리를 할 수 있다.

가장 먼저 깃의 상태를 확인하기 위해 git status라는 명령어를 사용했다.

 

 

 

no commits yet : 커밋한 파일이 없다는 뜻이다.

nothing to commit : 현재 커밋할 파일이 없다는 뜻이다.

 

 

이후 파일은 수정한 후 다시 상태를 조회하면 

untracked file라는 문구를 볼 수 있는데 이것은 스테이지에도 올라가지 않은 상태이다.

즉, 버전을 아직 관리하지 않은 파일이라는 뜻이다.

 

 

 

 

 

수정한 파일을 스테이지에 올리기 - git add

 

작업 트리에서 파일을 만들거나 수정한 후에는 스테이지에 수정한 파일을 추가한다.

이것은 깃에게 버전을 만들 준비를 하라고 알려주는 것으로 스테이징 또는 스테이지에 올린다고 한다.

 

 

깃에서 스테이징할 때 사용하는 명령은 git add이다.

$ git add hello.txt

 

다시 상태 확인을 하면 다음과 같은 문구를 볼 수 있다.

이전과 다른 문구를 볼 수 있는데

이것을 통해 new file 인 hello.txt를 스테이지에 올렸다는 것을 알 수 있다.

 

git add

 

 

 

 

스테이징한 파일 커밋하기 - git commit

 

파일이 스테이징 영역에 있다면 다음으로 커밋을하여 버전을 만들 수 있다.

버전을 만드는 것을 깃에서는 커밋한다고 한다.

커밋할 때는 변경 사항을 확인할 수 있는 문구(메세지)를 같이 작성해준다.

 

 

$ git commit -m "아무내용없음"

 

 

커밋 후 결과 메세지를 보면 파일 1개가 변경되었다는 것을 볼 수 있다.

 

 

커밋 후의 상태를 보았다.

그럼 버전으로 만들 타입 없고 수정 사항이 없다는 문구를 볼 수 있다.

 

 

 

저장소에 저장된 버전 확인

버전이 제대로 만들어졌는지 log 명령을 사용해 확인할 수 있다.

$ git log

 

그럼 아래와 같은 문구를 볼 수 있는데

이전 로그인하면서 설정한 이름과 같이 만든 시간 그리고 커밋하며 같이 작성한 메세지가 같이 출력된다는 것을 볼 수 있다.

 

 

 

git commit

 

 

 

 


 

02-3. 커밋 내용 확인하기

 

 

 

 

 

커밋 기록 자세히 살펴보기 - git log

 

커밋했던 기록을 살펴보는 명령어로 git log가 있다.

git log를 입력하면 지금까지 만든 버전들과 버전마다 설명이 함께 나타난다.

아래를 보면 작성자 버전만든 날짜, 커밋 메세지 로그 등을 볼 수 있고

(HEAD -> main) 이 버전이 가장 최신이라는 표시이다.

 

 

 

 

변경 사항 확인하기 - git diff

 

파일을 변경한 후 어떤 부분을 수정했는지 파악하기 위해 git diff를 사용한다.

git diff를 사용하면 스테이지에 있는 파일과 저장소에 있는 최신 커밋을 비교해서 수정한 파일을 검토할 수 있다.

 

$ git diff

 

 

파일을 수정한 후 git status 명령어를 사용해 상태를 확인하면 다음과 같은 메세지를 받을 수 있다.

이러한 메세지는 파일이 수정되었지만 아직 스테이징 상태가 아니라는 뜻이다.

 

아래는 git diff를 사용 후 출력되는 메세지이다.

글의 내용이 어떻게 수정되었는지 확인할 수 있다.

확인한 후 commit을 한다.

 

 

 

 

 

 

02-4. 버전 만드는 단계마다 파일 상태

 

 

 

tracked 파일과 untracked 파일

 

이전에서 깃의 상태를 보는 명령어인 git status를 사용하면 tracked 상태와 untracked 상태로 나뉜다.

tracked 상태는 추적이 가능한 상태이고 untracked 상태는 추적이 가능하지 않은 상태이다.

 

 

 

 

 

 

 

 

64

 

 

65

 

 

 

unmodified, modified, stage 상태

 

 

변경사항 67

git status를 사용해 상태를 보았다.

'changes not staged for commit'이라는 메세지가 나타나므로 파일이 수정만 된 modified 상태를 뜻한다.

 

 

 

 

 

아래 그림은 파일의 상태 변화를 정리한 그림이다.

untracked 문구는 스테이징을 올려주어야한다.

그리고 ummodified 는 파일 수정된 것이 없다는 말로 파일을 수정해야한다.

 

 

 

 

 

 


 

02-5. 작업 되돌리기

 

 

 

 

72

 

 

 

 

 

스테이징 되돌리기 - git restore --staged

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

최신 커밋 되돌리기 - git reset HEAD^

 

수정된 파일을 스테이징하고 커밋까지 했을 떄 가장 마지막에 한 커밋을 취소하는 방법은 git reset HEAD^이다.

이 명령어를 사용하면 커밋을 취소할 때 커밋과 스테이징이 함께 취소된다.

 

 

 

 

 

특정 커밋으로 되돌리기 - git reset 해시

 

특정 커밋으로 되돌려 놓고 그 이후 버전을 모두 삭제하는 명령어는 git reset이다.

$ git reset --hard 복사한 커밋 해시

 

 

 

rev.txt를 만들고 a를 작성한 후 저장한다.

 

 

파일을 수정한 후 $ git add rev.txt하여 스테이징에 올려준다.

그후 git commit -m "R1"을 사용하여 R1이라는 버전을 만들어주었다.

그 후 git log 사용하여 버전을 살펴 보니 만들어준 R1이 존재하는 것을 알 수 있었다.

 

 

그후 b를 작성하고 R2로 버전 저장을 하고 c작성 후 R3 저장 d 작성 후 R4 저장한다.

 

최종적으로 만들어진 것들의 리스트이다.

어떤 사용자가 어떤 날에 commit한지 볼 수 있다.

 

 

리스트를 확인 후 특정 커밋으로 되돌리기 위해 git reset 을 했다.

reset을 사용할 떄 주의할 점이 있다.

reset A를 입력한다면 이 명령은 A 커밋을 리셋하는 것이 아니라 최근 커밋을 A로 리셋한다.

그리고 A 이후에 만든 커밋을 삭제한다.

 

만약 R3, R4를 삭제하려면그 이전 커밋인 R2를 최신 커밋으로 만들어야 한다. 그렇기 때문에 git log명령의 결과에서 R2 커밋의 커밋 해시를 선택해 git reset --hard 뒤에 붙여서 작성한다.

 

 

 

이후 파일을 조회하는 cat을 사용하여 안의 내용을 살펴보니 b까지 입력되어 있었다.

그것을 보아 R2로 돌아간것을 볼 수 있었다.

 

 

 

 

 

 

커밋 변경 이력 취소하기 - git revert

 

특정 커심으로 되돌릴 떄 수정했던 것을 삭제해도 될 경우는 이전의 git reset을 사용해도 무방하다.

하지만 나중에 사용할 것을 대비해 커밋을 취소하더라도 커밋했던 기록은 남겨 두어야할 때가 있다.

이럴 경우 변경 사항만 취소하고 커밋은 남겨두어야하는데

변경 사항만 취소하고 커밋은 남겨둘 수 있는 명령어를 'git revert'라고 한다.

$ git revert 복사한 커밋 해시

 

 

rev.txt 파일에 e를 작성후 저장했다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday