Git 프로젝트에서 파일의 여러가지 상태

Git은 파일들의 버전을 관리하는 버전 관리 도구인 만큼 각각의 파일들이 어떤 상태인지를 여러가지로 분류하여 관리 합니다. 이러한 상태들을 이해하는 것은 어렵고, 세 가지 영역과 추적 여부, 수정 여부에 따라 복합적으로 여러가지 상태를 가지기 때문에 각각을 확실히 이해하는것이 중요합니다. 

 

아래에서 Git의 상태와 예시를 들어 이해를 돕고 git status명령어를 이용해 현재 파일의 상태를 확인해보겠습니다.

 

 

 

 

Untracked와 Tracked 상태

워킹 디렉터리에 있는 여러가지 파일들은 Git의 추적 관리 여부에 따라 각각 크게 두 가지 상태로 나눌 수 있습니다.

Untracked와 Tracked 상태인데 뜻 그대로 Tracked Git이 해당 파일을 추적 및 관리하는 상태 이며, Untracked는 반대로 아직 Git이 해당 파일을 추적 및 관리하지 않는 상태를 말합니다.

 

이는 워킹 디렉터리에 존재하는 파일이라고 해서 모두 Git이 관리하는 파일은 아니라는 뜻이기도 합니다. 따라서 Untracked 파일은 수정이 되거나 삭제가 되어도 Git은 전혀 신경쓰지 않으며, 해당 파일을 어떤 이유로 잃어버려도 복구가 불가능합니다. 대신 이러한 추적관리 시스템을 이용하면 Tracked 상태가 아닌 불필요한 파일들을 커밋하게 되는 실수를 방지할 수 있습니다.

 

Tracked 상태인 파일은 최소한 한번은 git add 명령을 통해 Staging Area에 포함되거나, Commit을 통해 Git 디렉터리에 저장된 파일입니다.

 

 

정리

  1. 워킹 디렉터리에 있지만 git add나 commit 하지 않은 파일은 Untracked 상태, git add나 commit 했던 적이 있는 파일들은 Tracked 상태입니다.

  2. Tracked 상태인 파일들은 Git이 저장 및 관리하며, Untracked 파일은 Git이 신경쓰지 않습니다.

  3. .gitignore파일을 생성해 untracked한 파일을 지정할 수 있습니다.

 

 

 

Git 3가지 상태

Unmodified와 Modified 상태

Untracked와 Tracked가 추적 관리 여부 관점에서 바라본 상태 였다면, 파일의 변경 여부에 따라 Modified(변경 발생) Unmodifed(변경 없음) 상태로 나눌 수 있습니다.

 

변경 발생 기준은 '파일이 Staged 또는 Commit된 시점 이후로 변경 되었는가' 입니다.

Staged는 git add 명령어를 통해 Staging Area에 내역을 추가한 상태입니다.

 

이 상태에서 git commit 명령을 통해한 Commit한 경우 Committed 상태입니다.

 

Git이 관리하지 않는 상태인 Untracked 파일은 두 가지 변경 관련 상태를 갖지 않으며, 이말은 곧 Unmodified 또는 Modified 상태인 파일은 곧 Tracked 상태인 것입니다.

 

 

Staged 상태

Staged는 간단하게 Untracked 파일이나 Modified 상태인 파일을 Staging Area에 내역을 등록하지 않은 상태입니다.

 

백문이 불여일견 이라는 말도 있으니 다음의 git status 명령어 실습을 통해서 이해를 돕도록 하겠습니다.

 

 

 

 

아래에선 명령어 수준에서 상태에 대해 설명하겠습니다.

아래에선 초기상태의 repo를 clone 받은 상황으로 first.txt 파일을 만들고 git status 명령어를 입력했을 때, 아직 git이 파일을 추적하지 않는 상황입니다.

git add 명령어로 Git이 파일을 추적하도록 만들고 상태를 보겠습니다.

위 화면에서 git status 명령어 결과로 Changes to be commited: 를 확인할 수 있습니다.

이 말은 파일이 staging area 영역에 있는 staged 상태입니다.

파일을 맨 처음 git에 add 할 때는 staged 상태가 됩니다.

commit 명령어를 통해 commited 상태로 repo에 저장했습니다.

이상태에서 파일의 내용을 변경하겠습니다.

위에서 단순히 파일을 변경할 경우, working directory 영역에서 modified 상태가 되며 commit을 할 수 없습니다. git add 명령어로 staged 상태로 변경해야만 commit이 가능합니다.



 

 

git status -s 를 통해 상태를 간략하게 확인하기

git status는 로컬저장소의 현재 상태를 보여줍니다.

 

git status 명령어의 --short 옵션 또는 -s 옵션을 통해 상태를 간략히 볼 수 있습니다.

 

$ git status -s

?? firstFile.txt
A  secondFile.txt
M thirdFile.txt
M  fourthFile.txt
MM fifthFile.txt

 

-s, --short 옵션을 주게 되면 git status 명령만을 사용했을 때 나왔던 상태 메시지들을 두 자리의 문자로 표현합니다.

앞자리는 Staging Area 기준, 뒷 자리 문자는 워킹 디렉터리 기준입니다. 다음의 설명을 참고합니다.

 

 

 

 

참조:

dololak.tistory.com/304

 

medium.com/sjk5766/git-3%EA%B0%80%EC%A7%80-%EC%83%81%ED%83%9C%EC%99%80-%EA%B0%84%EB%8B%A8-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-a80161aacec1

 

git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%88%98%EC%A0%95%ED%95%98%EA%B3%A0-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0

 

dimdim.tistory.com/entry/GIT%EC%97%90-%EB%8C%80%ED%95%9C-%EB%82%B4%EC%9A%A9%EC%A0%95%EB%A6%AC-%EC%A0%95%EB%A6%AC%EC%A4%91

반응형

'git(분산 버전 관리 시스템)' 카테고리의 다른 글

[git] git commit  (0) 2021.03.06
[git] git add와 staging Area  (0) 2021.03.06
[git] git config  (0) 2021.03.05
[git] git init  (0) 2021.03.05
[git] Git? Github?  (0) 2021.03.05

+ Recent posts