티스토리 뷰

Daylogs/Git

Git의 파일 상태

ohgyun 2012. 1. 16. 00:01
발생일: 2012.01.15

문제:
git에서 커밋할 때엔 항상 git add . 명령어로 커밋할 대상을 골라놓은 후,
git commit -m [message] 명령으로 커밋했다.

git add 가 정확히 어떤 것인지 모르고 습관적으로 실행했었는데,
이번에 책을 읽다가 알게된 내용을 메모해둔다.


해결책:

Git 프로젝트의 세 가지 단계
가장 먼저 Git 프로젝트의 세 가지 단계에 대해 이해해야 한다.

Git 프로젝트에는 Git Directory, Working Directory, Stating Area 세 가지 단계가 있다.
Git Directory는 Git이 프로젝트의 모든 정보를 저장하는 곳이다.
Git의 핵심이라 할 수 있고, Git을 새로 구축하거나 다른 저장소에서 Clone할 때 Git Directory가 만들어진다.

Working Directory는 프로젝트의 특정 버전을 Git Directory로부터 체크아웃 상태이다.
Staging Area는 곧 Commit 할 파일에 대한 정보를 저장한다. 단순한 파일이고 실제로 Git Directory 내에 존재한다.

Git으로 하는 일은 기본적으로 다음과 같다.
- Working Directory에서 파일을 수정한다.
- Staging Area에 파일을 Stage 해서 Commit 할 Snapshot을 만든다.
- Staging Area에 있는 파일들을 Commit 해서 Git Directory에 영구적인 Snapshot으로 저장한다.


Working Directory의 파일 상태
작업 디렉토리의 모든 파일은 크게 Tracked와 Untracked로 나뉜다.

Tracked는 Git의 관리 대상 파일임을 의미하고 반대로 Untracked는 관리 대상이 아닌 파일을 의미한다.

Tracked 파일들은 또 Unmodified(또는 Commited)와 Modified, Staged 상태로 나뉜다.
Unmodified는 수정되지 않은 파일을, Modified는 수정된 파일, Staged는 커밋 대상인 파일을 의미한다.

예를 들어, 새로운 파일을 만들고 Staging Area에 추가하지 않았다면 그 파일은 Untracked에 포함된 파일이다.
만약, Git의 관리 대상인 파일(Tracked)을 수정했지만 아직 Staging Area에 추가하지 않았다면, 그 파일은 Modified 이다.
파일을 수정하고 Staging Area에 추가했다면 그 파일은 Staged 가 되고,
Commit 했다면 Commited 또는 Unmodified 가 된다.


Staging Area에 추가하기
작업한 파일을 Git Directory로 커밋하려면 반드시 Stating Area에 추가해야 한다.
git add [file] 명령으로 작업한 파일을 Staging Area에 추가할 수 있다.

습관적으로 작성하고 있었던 git add . 는 변경된 모든 파일(정확하게는 Modified와 Untracked인 파일)을 Staged 로 변경하겠다는 의미였다.

git status 명령을 실행해보면,
각 파일을 상태별로 구분해 리스팅 해 줄 뿐만 아니라, 파일의 상태를 변경할 수 있는 팁도 전해준다.
지금까지는 무심코 지나쳤었는데, 이제 자세히 살펴보자.




반응형
댓글
공지사항