본문 바로가기

기본공부/깃(Git)&깃허브(GitHub)

[깃, 깃허브 배우기] 깃 워크플로우(Working Directory/Staging Area/.git directory) -3- (by. 드림코딩)

깃을 정확하게 이해하고 잘 활용하기 위해서는 깃의 workflow(워크플로우)를 이해하는 것이 정말 중요하다. 깃에는 총 3가지의 작업환경이 나눠져 있다. 

 

1) working directory : 프로젝트의 파일들을 수정하는 작업하고 있는 워킹 디렉토리.

2) staging area : 어느정도 작업하다가 버전 히스토리에 저장할 준비가 되어있는 파일들을 옮겨놓는 스테이징 에리어

3) .git directory : 버전의 히스토리를 가지고 있는 깃 리파지토리 및 깃 디렉토리

 

워킹 디렉토리에서 프로젝트 폴더에서 파일들을 수정하고 있다가 b 와 c 파일은 이제 어느정도 준비가 되었는데라고 결심을 하게 되면 스테이징 에리어로 b와 c파일을 옮겨두게 되고, 커밋이라는 명령어를 이용해서 스테이징 에리어에 있는 파일들을 깃 버전 히스토리에 저장하게 된다. 워킹 디렉토리에서 계속 a 파일을 수정하다가 이제 a파일도 준비가 되면 다시 스테이징 에리어로 커밋 명령어를 이용해서 다시 깃 히스토리에 저장할 수 있다. 

 

깃 디렉토리에 저장된 버전들은 체크아웃이라는 명령어를 이용해서 언제든지 원하는 버전으로 다시 돌아갈 수 있다.  이렇게 저장된 깃 히스토리는 나의 컴퓨터에만 보관되기 때문에 내 컴퓨터에 문제가 생기면 이런 히스토리를 다 잃어버릴 수 있다. 그래서 보통은 깃 디렉토리를 나의 컴퓨터에만 저장해 두는 것이 아니라, 깃허브 같은 서브에  push라는 명령어를 이용해서 나의 디렉토리를 서버에 업로드 해둘 수가 있다. 그리고 서버에서 다시 로컬로 다운로드 받고 싶다면 pull 명령어를 이용하면 된다.

 

각각의 버전들에 어떤 정보가 들어있는지 한번 살펴보면, 각각의 커밋에는 스냅샷된 정보들을 기반으로 해서 고유한 해시코드가 부가가 되는데 이것을 이용해 버전정보를 참조할 수 있다. 커밋에는 id뿐만 아니라 어떤 버전인지 버전의 관련된 메시지와 누가 작성했는지 날짜와 시간들도 함께 포함되어 있다.

 

워킹 디렉토리는 untracked와 tracked 두가지로 나누어 볼 수 있다.

깃이 이미 알고 있는 깃이 트래킹 하고 있는 파일이라면 tracked 카테고리로 나누어 지게 되고, 새로 만들어진 파일이거나 기존에 존재하던 프로젝트에서 깃을 초기화 하게 되면 깃이 파일에 대한 정보가 전혀 없는데 아직 트랙킹이 되지않은 파일들을 untracked 카테고리로 나눌 수 있다.

 

그리고 깃이 트래킹 하고 있는 파일들 중에서도 지금 이 시점에서 수정이 되었는지 유무에 따라서 tracked 카테고리에서 또  unmodified, modified로 나누어지게 된다. unmodifed 수정이 되지 않았다는 말은 이전 버전과 비교해서 수정되지 않았기 때문에 오직 modified 수정이 된 파일만 스테이징 에리어로 옮겨갈 수 있다.