카테고리 없음

[Git] 파일 상태

growbook91 2024. 1. 31. 17:24

Git 공부하는 있어서 파일의 가지 상태 개의 directory 이해하는 것은 중요하다.

 

그래야 다른 것들을 이해하기 수월하다.

 

다른 블로그들에서도 이해하기 편한 것들이 많지만, 공부하면서 새롭게 알게 된 것들도 있기 때문에 블로그를 작성해보았다.

 

조금 더 간단한 설명을 원한다면 아래 블로그를 참고하는 게 더 좋을 수 있다.

https://anerim.tistory.com/203

 

[깃 Git] git의 영역 정리(working directory, staging area, repository) / git의 상태 정리(untraked, tracked, staged, un

안녕하세요. 디자인도 하고, 개발도 하는 '디발자 뚝딱'입니다. 이번 포스팅에서는 working directory, staging area, repository의 개념을 정리해보겠습니다. 개발자라면 이 3가지 영역을 잘 이해해야 Git을

anerim.tistory.com

 

파일의 세 가지 상태

 

Git 공식문서에서는 다음과 같이 말한다.

Git은 파일을 크게 세 가지 상태로 관리한다.

- Committed란 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미한다.
- Modified는 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말한다.
- Staged란 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미한다.

 

출처: https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EA%B8%B0%EC%B4%88

 

 

Git 가지 영역

출처 : https://medium.com/sjk5766/git-3%EA%B0%80%EC%A7%80-%EC%83%81%ED%83%9C%EC%99%80-%EA%B0%84%EB%8B%A8-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-a80161aacec1

 

앞서 설명한 Git에서 파일 취급하는 세 가지 상태 그림에서 말하는 영역 깊은 연관성 있다.

먼저, 영역 개념 먼저 보자.

 

  • working directory : 내가 작업하고 있는 폴더.
  • Staging area : 어떤 것을 commit할 지에 정보를 저장하고 있는 파일. 하지만, 그냥 공간이라고 이해하는 편이 낫다.
  • .git directory : 프로젝트의 metada와 object database를 Git이 저장하고 있는 공간.

 

 

그러면 이제 위의 세 가지 상태 영역 다음과 같이 엮을 있다.

 

  • Working directory에서 파일을 수정한다. (Modified)
  • Staging area 파일을 stage한다. (Staged)
  • Staging area 있는 파일을 commit해서 .git 디렉토리 영구적 스냅샷으로 저장한다. (committed)

 

Working directory의 파일 상태

사실 이 부분이 내가 이 글을 쓰게 된 이유이다.

 

git의 상태가 modified, committed, staged만 있는 줄 알았는데 다른 개념들도 갑자기 등장해서 혼란스러웠고,

 

그것을 내 방식대로 정리하고 싶어서 이 글을 썼다.

 

틀린 부분이 있다면 편하게 지적해주시면 감사하겠습니다.

 

이건 working directory 파일의 상태 나타내는 그림이다..

 

근데 왜 staged 상태가 working directory에 있는 걸까?

 

그건 왜냐면, working directory 내에 파일을 staged 상태로 만들면 그것이 staging area에 저장되기 때문이다.

, staged라는 상태는 working directory 파일에 해당하는 것이고 staging area 별도의 공간이라고 생각하자.

 

tracked와 untracked

 

또, working directory의 파일은 크게 tracked untracked로 나뉜다.

 

Tracked 관리대상인 상태를 말한다.

 

Tracked에는 다음과 같은 세가지 상태가 존재한다.

  • Unmodified
  • Modified
  • Staged

 

Tracked 상태에 있는 파일이 변경되면 git 변경사항을 추적한다.

 

그림을 보면 이해가 쉽다.

 

명령어 따라서 어떤 상태인지를 나타낸 그림이다.

 

git add untracked file 새로 추적하는 데에도 사용하고 modified 파일을 staged 상태로 만들 때도 쓴다.

쉽게 말하면 파일을 staged 상태로 만들 쓴다.

 

  • 이 말은 내가 새로운 파일을 생성한 후에도 git add를 하면 staged 상태가 되는 것이고(untracked → staged)
  • 내가 git commit한 상태에서 어떤 파일을 수정하여 modified 상태로 만들고 git add를 하면 staged 상태가 된다는 것이다.(modified → staged)
  • 마지막으로 Staged 상태의 파일을 commit하게 되면 다시 unmodified로 바뀌게 되는 것이다. (staged → unmodified)

그리고 이 상태가 계속 반복된다.