Git 시리즈 (2)
개요
- 이번 포스트에선 git으로 버전관리하는 내용을 다룬다.
- 버전관리란 하나의 디렉터리 내부에서 많은 파일들이 생성, 수정, 삭제되는 시점의 역사를 특정한 hash값으로 기억하는 것이다.
- 이를 통해 버전마다의 상세내용을 시간이 지나서도 확인하거나 이전 버전으로 되돌리는 등의 작업이 가능해진다.
버전 만들기
- 버전관리를 할 때에는 총 3가지의 영역이 있음을 인지해야한다.
- 작업트리
- 스테이지
- 저장소(repository)
- 작업트리는 실제로 자신의 컴퓨터에 저장되어있고 직접 생성, 수정, 삭제작업이 이루어지는 디렉터리를 의미한다. 즉, 눈에 보이는 디렉터리가 바로 작업트리이다.
- 스테이지는 버전으로 만들 파일이 대기하는 공간이다.
-
저장소(repository)는 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳이다.
- git 버전관리를 하려면 현재 디렉터리에 git을 초기화시켜야 한다.
$ git init
- 이 상태에서 현재의 git 상태를 보면 아래와 같은 결과가 나온다. 현재 master브랜치에 있으며 이전에 커밋한 파일과 현재 커밋할 파일이 없음을 나타낸다.
$ git status // on branch master // No commits yet // nothing to commit
- 파일을 하나 생성한 후 다시 git 상태를 확인해보자. 그럼 현재 git에 의해 추적되지 않은 파일이 있다고 메세지가 나온다.
$ vi test1.txt $ git status // untracked files: test1.txt
- 해당 파일을 추적되게끔 만들면서 스테이지 영역으로 옮기려면 아래 명령어를 사용한다. 그럼 해당 파일은 추적이 되면서 commit할 수 있게 변경되었다는 메세지가 나온다.
$ git add test1.txt $ git status // changes to be committed: // new file: test1.txt
- git에서 버전을 만든다는 ‘커밋을 한다’고도 말할 수 있다. 스테이지 영역에 파일이 들어와야 커밋을 할 수 있으며 버전을 만들 수 있다.
$ git commit -m "create test1.txt" $ git status // nothing to commit // working tree clean $ git log --oneline
- 한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때에는 스테이징과 커밋을 동시에 할 수 있다.
$ git commit -am "update test1.txt"
커밋 & 파일 상태 확인하기
- 저장소에 저장된 버전을 확인할 때
$ git log
- 변경사항 확인할 때
$ git diff
- 현재 디렉터리에서의 파일 상태를 확인할 때
$ git status
작업 되돌리기
- 작업트리에서 수정한 내용을 이전 버전 내용으로 되돌리고 싶을 때
$ git checkout -- test1.txt
- 작업트리에서 수정한 내용을 스테이징했는데 이를 취소하고 싶을 때
$ git reset HEAD test1.txt
- 수정내용을 커밋했는데 이를 되돌리고 싶을 때
// 가장 최신의 커밋 하나만 되돌릴 때 $ git reset HEAD^ // 가장 최신의 커밋 3개를 되돌릴 때 $ git reset HEAD~3 // 특정 커밋으로 되돌릴 때 $ git reset [커밋 해시값]
- 커밋을 되돌리고 수정했던 것들을 삭제해도 된다면 git reset을 사용해도 되지만 수정내용을 삭제하지 않으면서 취소한 커밋을 남겨놓아야할 때가 있다. 이 때 아래 명령어를 사용한다.
$ git revert [커밋 해시값]
댓글남기기