Git

git의 workflow(추적 상태) - Untracked, Tracked, modified, staged

sangchu 2023. 1. 25. 15:03

git을 잘 이해하려면 먼저 git의 workflow를 알아야한다. git은 크게 아래와 같이 세가지의 작업환경으로 나뉘어져 있다.

  • working directory: 파일들을 작업(수정)하고 있는 공간
  • staging area: 버전 history에 저장할 준비가 되어있는 파일들을 옮겨 놓는 공간
  • .git directry: 버전의 history를 갖고 있는 git repository

add를 통해 working directory에 있는 파일들을 staging area로 옮길 수 있고, commit을 통해 staging area에 있는 파일들을  git version history에 저장하게 된다. 이 덕에 git checkout을 통해 언제든지 원하는 버전의 파일로 다시 돌아갈 수 있다.

 

이러한 것들은 내 컴퓨터에만 보관되어 있기 때문에 github과 같은 서버에 업로드 해둔다. 로컬에서 서버로 올릴땐 push, 서버에서 로컬로 가져올 때는 pull 명령어를 사용한다.

 

각각의 commit에는 고유 해쉬코드가 있는데, 이 id를 통해 버전 정보를 참조할 수 있다. 해쉬코드 id에는 버전에 대한 메세지와 작성자, 날짜, 시간정보도 포함되어 있다.

working directory는 상태를 크게 다음과 같이 두가지로 구분할 수 있다.

  • Tracked: 해당 파일은 git의 관리 대상이다.
  • Untracked: 해당 파일은 git의 관리 대상이 아니다.(git이 인식하지 못한다) 하지만 git add를 통해 tracked 상태로 바꿔줄 수 있다.

 

tracked 파일은 또 다음과 같이 세가지 상태로 구분할 수 있다.

  • Unmodified: 마지막 commit으로부터 파일의 내용이 변경되지 않았다.(최신 버전이 유지되고 있다.)
  • Modified: 파일의 내용이 변경되었다. 이때 마지막으로 commit했을 때가 아닌 staged상태에서 수정된 사항이 있을 때이다.  
  • Staged: Tracked 상태로 바꾸고 commit이 가능한 상태이다. 

git add를 사용하면 untracked 또는 modified 상태인 파일을 tracked인 staged인 상태로 된다.

 

 

이들의 흐름도를 표현하면 다음과 같다.

 

 

 

 

참고: 슬git로운 코딩생활, git 공식문서, 드림코딩