개념
- working directory
- staging area
- repository
working directory
- 작업을 하는 프로젝트 디렉토리 ex)MathTool
- =
working tree
staging area
- git add를 한 파일들이 존재하는 영역.
- 커밋을 하게되면 staging area에 있는 파일들만 커밋에 반영됩니다.
- =
index
repository
- working directory의 변경 이력들이 저장되어 있는 영역입니다.
- 커밋들이 저장되는 영역이라는 뜻!
정리
working directory - (git add cal.js) -> staging area - ( git commit -m "Ver_1") -> repository
- working directory에서 작업 -> 작업한 파일들 git add 하고 이 파일들은 staging area 추가됨->commit 하게되면 파일들의 모습이 스냅샵처럼 repository에 저장
staging area에 올렸는지 여부에 따라 최신 모습이 커밋에 반영되는지가 달라집니다.
- 예를 들면 working directory에서 a파일 b파일 코드 수정을 했습니다. 하지만 b파일만
git add
를 하고 commit
을 했다면 repository에 (a파일이전 , b파일수정본) 이 하나의 버전으로 올라가게 됩니다.
실습
- 파일 수정하기
- 기존에 있던 cal.js 와 License에 주석을 추가해봤습니다.
- 한 파일만 git add 하기
- 확인해보기
- git status
로 상태를 확인했습니다.
Changes to be committed : 커밋에 반영될 변경사항
Changes not staged for commit : 커밋에 반영되지 않는 변경사항
- cal.js는 staging area에 있고, 변경은 했지만 staging area에 없는 파일은 License 입니다 라고 알려주는 메시지입니다.
- commit을 하기전에 확인하면 좋습니다.
git status
: 깃이 인식하고 있는 프로젝트 디렉토리의 현재 상태를 보여줌
추가
git add (디렉토리명)
: 디렉토리 아래에 속해있는 파일 한번에 추가됩니다.
git add .
: 현재 프로젝트 디렉토리 내에서 변경사항이 생긴 모든 파일들을 staging area에 추가하라
파일의 4가지 상태
- Untracked 상태
- Tracked 상태
Tracked 상태
- Staged 상태
- Unmodified 상태
- modified 상태
1. Untracked 상태
- 파일이 Git에 의해서 변동사항이 전혀 추적되고 있지 않는 상태를 뜻합니다.
- 파일을 새로 생성하고 그 파일을 한번도
git add
해주지 않았다면 이상태.
2. Tracked 상태
- 파일이 Git에 의해 그 변동사항이 추적되고 있는 상태입니다.
- 그 특성에 따라 3가지 상태로 나뉩니다.
1) Staged 상태
- staging area에 올라와 있는 상태
- 새로 생성된 파일에 내용을 쓰고 git add를하거나
- 한 번이라도 커밋에 포함됐었던 파일이라도 내용을 수정하고 git add를 해주면 이 상태
2) Unmodified 상태
- 최신 커밋의 모습과 비교했을 때 변동사항이 없는 상태(수정되지 않은, 변한게없는)
- 커밋을 하고 난 직후에는 working directory 안의 모든 파일들이 이 상태가 됩니다.
3)Modified 상태
- 최신 커밋의 모습과 비교했을 때 조금이라도 바뀐 내용이 있는 상태.
출처 : 코드잇 ,pro Git