[Git & GitHub] Git의 작업 영역 & 파일 상태

:-)·2022년 5월 4일
3

😺 Git & GitHub

목록 보기
5/5
post-thumbnail

📌 Git은 내부적으로 크게 3가지 종류의 작업 영역을 가지고 있다.

  1. working directory
  2. staging area
  3. repository

📝 1. working directory (working tree)

  • 첫 번째 작업영역인 working directory는 작업을 하는 프로젝트 디렉토리를 말한다.
  • .git 디렉토리를 제외한 모든 영역이다.

📝 2. staging area (index)

  • 두 번째 작업영역인 staging area는 git add를 한 파일들이 존재하는 영역이다.
  • 이 곳에 있는 파일들만 커밋에 반영된다.

📝 3. repository

  • working directory의 변경 이력들이 저장되어 있는 영역이다.
    즉, 커밋들이 저장되는 영역이다.
  • .git 디렉토리가 repository이다.



작업 영역의 관계

  1. working directory에서 A.txt 파일과 B.txt 파일을 작성하고

  2. git add A.txt와 git add B.txt를 실행해서 staging area에 올라간다.

  3. git commit -m "1st commit"을 실행해서
    staging area에 있던 파일들의 모습이 스냅샷처럼 하나의 버전으로 Repository에 저장된다.



예시)

  • working directory에서 A, B.txt의 내용을 추가하고

  • git add B.txt만 실행해서 B.txt 파일만 staging area에 올렸을 때

  • git commit -m "2nd commit"을 하면
    A.txt는 수정전, B.txt는 수정후 파일이 커밋에 반영되었다.

❗❗ 즉 working directory에서 수정을 해도 staging area에 올렸는지 여부에 따라
그 최신 모습이 커밋에 반영되는지가 달라진다.






📌 Git으로 관리되는 파일은 4가지의 상태(status)를 가지고 있다.

  • Untracked
  • Staged
  • Unmodified
  • Modified

Git에서 파일들은 크게 2가지 상태를 가진다.

  • Untracked
  • Tracked

그리고 Tracked 상태는 다시 3가지 상태로 나눌 수 있다.

  • Staged
  • Unmodified
  • Modified

📝 1. Untracked

  • Untracked는 '추적되지 않고 있는'이라는 뜻으로
    파일이 Git에 의해서 그 변동사항이 전혀 추적되고 있지 않는 상태

  • 파일을 새로 생성하고 그 파일을 한 번도 git add 해주지 않은 상태를
    Untracked라고 한다.


📝 2. Tracked

  • 파일이 Git에 의해 그 변동사항이 추적되고 있는 상태
  • Tracked 상태는 그 특성에 따라 3가지 상태로 나뉜다.

2-1. Staged

  • staging area에 올라와있는 상태를 말한다.
새로 생성한 파일에 내용을 쓰고 git add를 해주거나,

한 번이라도 커밋에 포함됐었던 파일이라도 내용을 수정하고 git add를 해주면 이 상태이다.

2-2. Unmodified

  • 현재 파일의 내용이 최신 커밋의 모습과 비교했을 때 전혀 바뀐 게 없는 상태면
    그 파일은 Unmodified(수정되지 않은, 변한 게 없는) 상태이다.

  • 커밋을 하고 난 직후에는 working directory 안의 모든 파일들이 이 상태이다.


2-3. Modified

  • 최신 커밋의 모습과 비교했을 때 조금이라도 바뀐 내용이 있는 상태면
    그 파일은 Modified(수정된) 상태이다.



파일의 라이프사이클

상황설명
Add the fileUntracked 상태의 파일을 처음으로 git add 해주면 Staged 상태가 된다.
Edit the file최신 커밋과 비교했을 때 차이가 없는 Unmodified 상태의 파일의 내용을 수정하면 Modified 상태가 된다.
Stage the fileModified 상태의 파일을 git add 해주면 Staged 상태가 된다.
Remove the file파일을 삭제하면 Git에서 더이상 인식하지 못하는 Untracked 상태가 된다.
Commit커밋을 하면 staging area에 있던 파일들이 커밋에 반영되고,
이제 모든 파일들은 최신 커밋과 차이가 없게 되니까 Unmodified 상태가 된다.









이 글은 CODEIT의 강의를 기반으로 작성했습니다.

0개의 댓글