📌 Git은 내부적으로 크게 3가지 종류의 작업 영역을 가지고 있다.
- working directory
- staging area
- repository
working directory에서 A.txt 파일과 B.txt 파일을 작성하고
git add A.txt와 git add B.txt를 실행해서 staging area에 올라간다.
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가지 상태를 가진다.
그리고 Tracked 상태는 다시 3가지 상태로 나눌 수 있다.
Untracked는 '추적되지 않고 있는'이라는 뜻으로
파일이 Git에 의해서 그 변동사항이 전혀 추적되고 있지 않는 상태
파일을 새로 생성하고 그 파일을 한 번도 git add 해주지 않은 상태를
Untracked라고 한다.
새로 생성한 파일에 내용을 쓰고 git add를 해주거나,
한 번이라도 커밋에 포함됐었던 파일이라도 내용을 수정하고 git add를 해주면 이 상태이다.
현재 파일의 내용이 최신 커밋의 모습과 비교했을 때 전혀 바뀐 게 없는 상태면
그 파일은 Unmodified(수정되지 않은, 변한 게 없는) 상태이다.
커밋을 하고 난 직후에는 working directory 안의 모든 파일들이 이 상태이다.
상황 | 설명 |
---|---|
Add the file | Untracked 상태의 파일을 처음으로 git add 해주면 Staged 상태가 된다. |
Edit the file | 최신 커밋과 비교했을 때 차이가 없는 Unmodified 상태의 파일의 내용을 수정하면 Modified 상태가 된다. |
Stage the file | Modified 상태의 파일을 git add 해주면 Staged 상태가 된다. |
Remove the file | 파일을 삭제하면 Git에서 더이상 인식하지 못하는 Untracked 상태가 된다. |
Commit | 커밋을 하면 staging area에 있던 파일들이 커밋에 반영되고, 이제 모든 파일들은 최신 커밋과 차이가 없게 되니까 Unmodified 상태가 된다. |
이 글은 CODEIT의 강의를 기반으로 작성했습니다.