[Git] tracked & untracked files
Git의 라이프사이클
이전에 Git에 대해 포스팅을 할때, Git은 Committed, Modified, Staged 이렇게 세개의 상태로 관리한다고 언급 했었다.
해당 상태는 Git 프로젝트의 세 가지 단계(Working Directory, Staging Area, Repository)와 연결되어 있다.
Committed | 데이터가 로컬 데이터베이스에 안전하게 저장된 상태 |
Modified | 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 상태 |
Staged | 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태 |
워킹 디렉토리의 파일은 크게 Tracked(관리 대상)과 Untracked(관리대상이 아님)으로 나뉜다.
Tracked & Untracked
Tracked
Tracked 파일은 이미 스냅샷에 포함된 파일으로, Tracked 파일은 또 Unmodified와 Modified 그리고 Staged(커밋으로 저장소에 기록할) 상태 중 하나이다. 간단히 말하자면 Git이 알고 있는 파일이라는 것이다.
UnTracked
위에서 말한 Tracked 파일을 제외한 나머지 파일은 모두 Untracked 파일이다. Untracked 파일은 워킹 디렉토리에 있는 파일 중 스냅샷에도 Staging Area에도 포함되지 않은 파일이다.
마지막 커밋 이후, 아직 아무것도 수정하지 않은 상태에서 어떤 파일을 수정하면 Git은 그 파일을 Modified 상태로 인식한다. 실제로 커밋을 하기 위해서는 이 수정한 파일을 Staged 상태로 만들고, Staged 상태의 파일을 커밋한다.
Git status
파일의 상태를 확인하기 위해선 보통 git status 명령을 사용한다.
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
프로젝트에 README 파일을 생성하면, README 파일은 새로 만든 파일이기 때문에 Untracked files에 들어있다.
$ echo 'My Project' > README
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
README
nothing added to commit but untracked files present (use "git add" to track)
파일이 Tracked 상태가 되기 전까지는 Git은 절대 그 파일을 커밋하지 않는다.
파일을 새로 추적하기 위해서는 git add 명령으로 파일을 새로 추적할 수 있다.
Stage 상태에서 Unstaged 상태로 되돌리기
Tracked 파일이 Commit이 되어 Staging Area로 들어간 이후면 커밋을 되돌려야한다.
git reset HEAD [commit hash]
#직전 커밋 취소
git reset --HARD HEAD^
#직전 커밋이 취소되고 stage 상태로 남음
git reset --soft HEAD~1
커밋이 되지 않은 특정 파일의 Staging 취소하고 싶으면 다음과 같이 할 수 있다.
git restore --staged [file]
'💽 CICD' 카테고리의 다른 글
[Jenkins] Job copy하기 (0) | 2023.11.16 |
---|