버전관리에 들어가기에 앞서 우선적으로 세 가지 개념을 먼저 정리해야한다.
- working tree : 사용자가 파일을 만들거나 수정하는 디렉토리이다.
- staging area : working tree에 있는 파일들 중 버전으로 만들고자 하는 것들을 저장하는 곳이다.
- repository : 만들어진 버전들을 저장하는 곳이다.
버전관리에 자주 사용하는 명령어들과 함께 과정을 정리해보면,
- git init : 디렉토리를 git을 사용할 수 있도록 git repository로 지정하고 .git이라는 숨김폴더를 생성한다.
- git status : working tree의 상태를 보여준다.
- git add : 버전으로 만들고자 하는 파일을 staging area에 추가한다.
- git commit : staging area에 있는 파일을 버전으로 만든다.
- git log : 버전 기록을 보여준다.
-git log --stat : 각 버전마다 어떤 파일들이 연관되어 있는지 보여준다.
한 눈에 그림으로 정리하자면, 위와 같다.
버전관리를 연습해보는 과정에서 한가지 시행착오가 있었다.
git bash에 이름과 이메일을 등록하지 않고 이용하여 git commit을 할 때, 아래와 같은 오류가 떴었다.
git config --global user.email "이메일"
git config --global user.name "이름"
위의 방식으로 이메일과 이름을 등록해주면 간단히 해결된다.
버전관리의 CRUD를 한번에 정리해보자.
Create | git init | 디렉토리를 git을 사용할 수 있도록 git repository로 지정하고 .git이라는 숨김폴더를 생성한다. 버전 관리를 시작하겠다는 의미이다. |
git add | 버전으로 만들고자 하는 파일을 staging area에 추가한다. | |
git commit | staging area에 있는 파일을 버전으로 만든다. -am : add와 commit과정을 한번에 해준다. 단, untracked 파일은 제외한다. | |
Read | git status | working tree의 상태를 보여준다. |
git log | 버전 기록을 보여준다. | |
git diff | 버전 간의 파일 내용을 비교한다. | |
Update | git checkout | 해당 버전id로 돌아간다. master를 지정하면 원래의 장소로 돌아간다. |
Delete | git reset | 버전을 삭제한다. 지정한 id의 버전으로 돌아가고 이후 내역을 삭제한다. --hard : commit된 파일들을 working tree에서 삭제한다. 단, untracked 파일은 제외한다. --mixed : commit된 파일들을 working tree로 돌려놓는다. --soft : commit된 파일들을 staging area로 돌려놓는다. |
git revert | 이전 커밋 내역을 삭제하지 않고 그 버전으로 되돌아간다. revert 했다는 내역이 남는다. 순차적으로 되돌리지 않으면 충돌이 생긴다. |