Git 동작 구조 (Git 작업 흐름)

Working Directory, Staging Area, Repository 가 무엇인지 알아보기 전에 간단한 예제를 보자.


Understanding Git a little bit with SourceTree
1. Repository 폴더에 READEME.md 파일을 만든다.


2. Unstaged files에 보라색 물음표  ? 로 표시된 README.md 파일이 생겼다.


3. wow.java 파일을 수정한다.


4. README.md 파일과 달리 wow.java 파일은 노란색  ... 로 표시되어 있다.


5. README.md 파일만 커밋한다.


6. 다시 README.md 파일을 수정한다.


7. 2번과 달리 README.md 파일이  ... 으로 표시된다.


1~7을 통해서 Git 은 한번이라도 add된 파일과 한번도 add되지 않은 파일을 구분한다는 것을 알 수 있다. 아래 그림을 참고하면, 한번이라도 add된 파일은 Modified 상태이고, 한번도 add된 적 없는 파일은 Untracked 상태이다.


Git Architecture
아래 그림은 Git 의 기본적인 동작 구조(작업 흐름)이다.

Git 작업 흐름



Add & Staging
Staging Area에 파일을 추가하는 것

Commit
Staging Area에서 Local Repository로 버전을 올리는 것

Working Directory & Unstaged
파일의 수정은 모두 여기서 발생한다.

Untracked & Modified
git에서 snapshot을 만들 준비가 되지 않은 상태이다.
untracked : git 프로젝트에 생성된 모든 새로운 파일
modified : 이전에 있었으나 변경된 파일

Staged & Staging Area
파일을 staged하면 staging area에 올라간다. 여기에서 git은 스냅샷을 생성하여 현재 상태를 local repository에 저장할 수 있다. staging area를 Index 라고도 부른다.

Committed & the Git Directory 
committed 는 git이 staging area에서 파일의 snapshot을 공식적으로 생성하고 git directory에 고유한 index를 저장했다는 것을 의미한다. snapshotted 와 committed 두 용어는 매우 유사하다. 커밋을 통해 언제든지 지금의 프로젝트 상태로 되돌릴 수 있다.

HEAD
가장 마지막에 커밋된 snapshot








댓글

이 블로그의 인기 게시물

AWS RDS DB 인스턴스에 연결하기 (Oracle Database Instance)

tomcat server.xml ( 톰캣 서버 설정 )

Git resolving merge conflicts as Mark resolved (mark resolved 옵션으로 해결)