git working directory, staging area, repository

Ziggy Stardust·2024년 10월 25일
0

working directory 에는 기본적으로 깃 저장소에 존재하는 파일들이 전부 등록됩니다.
Staging Area 에는 커밋에 포함될 작업물들이 저장됩니다.
Repository 에는 커밋을 통해 확정된 작업물들이 저장됩니다.

Working Directory

Working Directory 는 내부적으로 tracked , untracked 로 상태가 나눠집니다.


Working Directory 내 상태와 바뀌는 분기

  • Untracked : 기본적으로 깃 초기화가 일어나면 모든 파일들은 깃의 관리대상이 아닙니다. Untracked 는 한 번도 깃에 의해 관리된 적 없는 상태를 의미합니다.

  • Tracked : 한 번이라도 깃의 관리를 받아 깃에 의해 추적 받는 상태

  • Untracked -> Tracked : git add 를 통해 Staging Area 에 저장되면 그때부터 깃에 의한 관리대상이 됩니다.(깃 관점에선 관리의 대상이 됨과 동시에 Staging Area 에 올라가 커밋의 대상이 됩니다. 이 상태를 Staging이라 하겠습니다.)

  • Tracked -> Untracked : Staging 상태의 파일을 git restore 명령어를 통해 만들 수 있습니다.

restore 시 최신 working directory 의 최신 작업이 staging 상태의 이전 작업으로 대체됩니다. !최신작업 유실 가능


Staging Area

커밋되길 희망하는 변경작업들을 저장합니다.

  • Unstaging(Working Directory) -> Staging :
    git add 를 통해 가능합니다.

  • Staging -> Unstaging :
    Staging 상태의 작업물을 Unstaging 상태로 무르고 싶다면 git reset HEAD [파일이름] 명령어가 있습니다.

git reset (--mixed) HEAD
지정한 HEAD 커밋으로 상태를 되돌립니다. 기본적으로 --mixed 옵션이 동작해 Working Directory 에는 영향이 닿지 않아 Working Directory 에는 작업이 남게 됩니다.


soft : 이 옵션은 HEAD를 지정된 커밋으로 이동시키지만, 스테이징 영역과 워킹 디렉토리는 그대로 유지합니다. 즉, 변경 사항은 스테이징된 상태로 남아 있어, 다시 커밋할 준비가 된 상태가 됩니다.
mixed : 기본 옵션으로, HEAD를 지정된 커밋으로 이동시키고 스테이징 영역을 업데이트하여 변경 사항을 언스테이지드 상태로 만듭니다. 워킹 디렉토리는 변경되지 않으며, 수정된 파일들은 그대로 남아 있습니다
hard : 이 옵션은 HEAD, 스테이징 영역, 그리고 워킹 디렉토리를 모두 지정된 커밋의 상태로 되돌립니다. 따라서 모든 변경 사항이 삭제되며, 복구할 수 없습니다.


Repository

커밋을 통해 Staging Area 에 있는 작업물들을 하나의 스냅샷으로 저장합니다.

  • Staging Area -> Repository :
    git commit 을 통해 가능합니다.
profile
spider from mars

0개의 댓글