[Git] Git의 작동 구조, 파일 관리 상태 위주로 (파일 라이프사이클)

yerim·2025년 1월 12일
1

Git

목록 보기
1/3

서론

보통 Git 명령어를 사용할 때, 검색해서만 사용하다보니 기본내용을 잊은 것 같아서 정리해보려고 한다.
여기서는 아래 공식 레퍼런스를 참고하여 로컬 저장소 위주로 파일 관리 부분에 대해 정리하였다. 예시나 설명이 자세히 되어있으니 한 번씩 정독하는 걸 추천한다.





1. Git

  • 분산형 버전 관리 시스템
  • 기존의 다른 형상 관리 시스템은 각 파일에 대한 변화를 시간 순으로 저장하지만 git은 파일이 존재하는 그 순간을 중요하게 여긴다.
  • git은 데이터를 스냅샷의 스트림처럼 취급한다.
    • 스냅샷 → 각 커밋 (특정 시점의 상태)
      • 사진 찍듯이 기록하는 방식으로 특정 시점의 정적 상태를 저장한다.
    • 스트림 → 커밋 간의 연결된 흐름 (변화의 역사)
      • 포인터를 사용하여 이전 커밋과 연결한다.
    • 즉, 데이터의 변화 과정을 지속적으로 연결된 상태로 관리한다.


2. Git의 세 가지 단계

git은 아래와 같이 세 가지 단계로 나눌 수 있다.

  • .git(directory)
    • 프로젝트의 메타 데이터와 객체 데이터베이스를 저장하는 곳이며 로컬 git 저장소라 불린다.
    • init, clone 할 때 이 git 디렉토리가 생성된다.
  • Staging Area
    • git 디렉토리에 존재하며 곧 커밋할 파일의 정보를 저장하는 파일이다.
    • index 라고도 한다.
  • Working directory
    • 실제로 작업하는 공간으로 워킹 트리, 샌드박스 (송신함) 라고도 한다.
    • .git 폴더가 들어있는 폴더이다.


3. Git의 파일 라이프 사이클 단계

git에서 파일은 아래와 같은 상태로 관리된다. 파일은 크게 Untracked와 Tracked로 나뉜다.

  • Untracked (관리 대상 아님) : 워킹 디렉토리에 있는 파일 중 스냅샷에도 index(Staging
    Area)에도 없는 파일
  • Tracked (관리 대상) : git이 관리하는 파일
    • Unmodified (수정하지 않음)
    • Modifeid (수정함)
    • Staged (커밋으로 저장소에 기록할 예정)

  • 파일 라이프 사이클을 설명해보면 아래와 같다.
    • Untracked 파일은 git add 을 통해 Staging Area에 기록되어 Staged 상태가 된다.
    • Staged 파일이 git commit 명령을 통해 스냅샷이 생성되면 Unmodifid 상태로 변한다.
    • Unmodifid 파일을 삭제하면 Untracked 상태가 되고, 수정하면 Modified 상태가 된다.
    • Modified 상태에서 git add 명령으로 수정된 파일을 Staged 상태로 만든다.


4. Git의 파일 상태를 확인하는 법

  • git status 명령어를 사용하여 파일 상태를 확인할 수 있다.
  1. 새로운 파일 생성하기 (Untracked)
    • test.txt 새로운 파일 생성하고 상태를 확인하면 Untracked 로 아직 git이 추적하지 않는 파일이다. 스냅샷에도, Staging Area에도 없는 파일이기 때문이다.

  1. 새로운 파일 추적하기 ( Tracked - Staged)
    • git add 명령어로 Statging Area에 올리면 파일은 Staged 상태가 되며 git은 test 파일을 추적하기 시작한다.

  1. 스냅샷 생성, 커밋하기 (Unmodified)
    • git commit 을 통해 스냅샷을 생성하면 파일은 Unmodified 상태가 된다.

  1. 커밋 후 파일 수정하기 (modified)
    • test.txt 파일을 수정하고 다시 확인해보면 Changes no staged for commit 로 수정한 파일이 Tracked 상태이지만 아직 Staged 상태는 아님을 보여준다. (modified 상태)

  1. 수정한 파일을 Staged 상태로 변경 후 다시 수정하기
    • 위에서 수정한 파일을 다시 Staged 상태로 만들고 수정하면 Staged 상태이면서 동시에 Unstaged 상태가 된다.
    • 이 시점에서 커밋을 하면 git commit 하는 시점의 파일이 아닌 마지막으로 git add 으로 했을 때의 버전이 올라가게 된다. 따라서 git add 명령을 통해 최신 버전을 Staged 상태로 만들어야 한다.



5. 파일 상태를 간략하게 확인하기

git status -s 또는 git status --short 명령어를 통해 간략하게 확인할 수 있다.

길었던 정보들이 간단한 표시를 통해 표현된다.

  • (Staging Area에서의 상태)(Working Tree의 상태) 파일명 와 같이 표현된다.
  • M은 수정한 파일, ??은 아직 추적하지 않은 파일, A는 Staged 상태로 추가한 파일 중 새로 생성한 파일을 의미한다.


profile
쌓아가는 중

4개의 댓글

comment-user-thumbnail
2025년 1월 12일

커밋 내용들은, 항상 스테이징된 녀석들만 올라가는 건가요??

1개의 답글