git 기초편 (2) - git의 Workflow
Basics
Workflow
git에는 총 3가지의 작업 환경이 나눠져 있다.
working directory : 우리가 프로젝트의 파일들을 수정하고 작업하고 있는 곳
working directory는 untracked, tracked 두 가지로 나누어 볼 수 있다.
tracked - git이 이미 알고있는(tracking) 파일이라면 tracked
untracked - 새로 만들어진 파일이거나 기존 프로젝트에서 git을 초기화 하게 되면 git이 파일에 대한 정보가 없는데 아직 tracking이 되지 않은 파일들을 untracked으로 분류한다.
tracked 에서도 지금 수정유무에 따라 unmodified(수정안됨), modified(수정된) 두 가지로 나눠 볼 수있다. 여기서 이전 버전과 비교해서 수정된 modified 파일만 staging area로 옮겨 갈 수 있다.
staging area : 작업하다가 버전 히스토리에 저장 할 준비가 되어 있는 파일들을 옮겨놓는 곳
.git directory : 버전의 히스토리를 가지고 있는 곳
아래 예시처럼 적용된다.
- a,b,c 파일 작업중
작업공간 | working directory | staging area | .git repository |
작업 파일 | a ,b, c |
- b,c 파일의 완성도가 어느정도 가춰짐
작업공간 | working directory | staging area | .git repository |
작업 파일 | a | b, c |
- commit 이라는 명령어를 이용해서 staging area에 있는 파일들을 git 버전 히스토리에 저장
작업공간 | working directory | staging area | .git repository |
작업 파일 | a | commit[b ,c] |
- 파일 a 또한 같은 방식으로 진행될 수 있다.
working directory > staging area > .git directory[버전 히스토리2[a]
이렇게 .git repository에 저장된 버전들은 checkout이라는 명령어를 이용해서 언제든지 원하는 버전으로 돌아갈 수 있다.
위와 같이 저장됨 git히스토리는 내 PC에만 보관 되기 때문에 내 컴퓨터에 문제가 생기면 히스토리를 잃을 수있다. 때문에 PC말고 githube와 같은 서버에 push라는 명령어를 통해서 나의 서버에 업로드가 가능하다. 그리고 서버에서 다시 로컬로 다운로드 받고 싶다면 pull이라는 명령어를 이용 할 수 있다.
스냅샷 : 변경된 파일 전체를 저장하지 않고, 파일에서 변경된 부분을 찾아 수정된 내용만 저장합니다. 마치 변화된 부분만 찾아 사진을 찍는 것과 같다고 하여 스냅샷 방식이라고 합니다.
각각의 버전들의 정보가 어떻게 들어있는지 살펴보자면, 각각의 commit에는 스냅샷된 정보들을 기반으로 고유한 hashcode가 부가된다. 이들을 이용해서 우리가 버전 정보를 참조할 수가 있다.
commit에는 id뿐만 아니라 어던 버전인지 버전의 관련된 메시지, 작성자, 날짜 시간 같은 정보들도 함께 포함되어 있다.