git 저장소 관련 용어
remote 저장소: 인터넷이나 네트워크 어딘가에 있는 저장소(원격 서버에 저장). remote 저장소를 관리하면서 데이터를 저장소에 추가하고(Push) 저장소로부터 내 디바이스(PC)에 데이터를 가져와서 작업 → 다른 사람들과 함께 병렬 작업이 가능
local 저장소: 현재 내가 사용하고 있는 내 디바이스(PC)에 있는 저장소. remote 저장소의 파일을 local 저장소로 가져와서(Pull) 작업
init: .git이라는 하위 디렉토리를 만든다(해당 디렉토리 안에). 이 폴더가 우리의 로컬 컴퓨터에 존재하는 git 저장소 무슨 디렉토리지? → 내부동작 이해하기
clone: remote 저장소를 local 저장소로 복사하는 작업. 프로젝트의 히스토리를 전부 받아올 수 있음
git 공간 분류
- git repository, staging area, working directory
- git에는 크게 3가지 공간이 있다(물리적 구분이 아닌 공간의 성격에 따른 추상적인 구분)
- working directory: 작업을 하고 있는 로컬 컴퓨터의 공간. sample.txt 파일을 만들었을 때, 파일이 저장되는 공간.
- staging area: 커밋할 파일에 대한 정보를 저장하는 공간(사실, 스테이징 에어리어의 정보들도 ‘.git’ 폴더 안에 있음)
- git directory: staging area의 파일들을 커밋하여 영구적인 스냅샷을 저장하는 장소(.git directory)
![11](https://u
- git add sample.txt 명령어를 사용하면 sample.txt 스테이징 에어리어에 올라간다. 이때, 워킹 디렉토리의 파일을 옮기는 것이 아니라 복사한다고 생각해야함
- git commit sample.txt 명령어를 사용하여 staging area에 있는 파일들이 최종적으로 git 저장소에 저장되어 영구적인 스냅샷으로 저장됨
파일의 상태 분류
git에 의해 관리되는 파일들이 가지는 상태(status)
워킹 디렉토리의 파일은 먼저 크게 Untracked, Tracked의 두 가지 상태로 나뉜다.
- untracked
- 파일을 새로 만들 경우 → git이 파일을 추적하지 않는 상태
tracked
- 이후 git add 명령어 → staging area에 저장되어 git이 파일을 추적하는 ‘tracked’ 상태
- 파일을 새로 만들고 git add를 한 후에 직접 **git rm –cached
** 명령어를 이용하지 않는 이상 untracked 상태로 돌아올 수 없음 tracked 상태의 파일들은 다시 크게 Unmodified, Modified, Staged 3개의 상태로 나뉜다.
- unmodified
- staging area에 있는 파일들을 commit → 해당 파일들은 하나의 커밋으로 저장된 후, 파일은 unmodified 상태로 내려옴
modified
- unmodified 상태의 파일들을 수정 → modified 상태
- staged
- 이후 다시 git add 명령어 → staged 상태로 올려준 후 커밋을 하는 과정을 반복
- unmodified
- untracked
git status 명령어 실행 시
- Untracked files 명단에 있는 파일들이 Untracked 상태의 파일이다.
- Changes to be committed 명단에 있는 파일들이 Staged 상태의 파일이다.
- Changes not staged for commit 명단에 있는 파일들이 Modified 상태의 파일이다.
- ‘unmodified’ 상태의 파일은 화면에 출력되지 않음
하나의 파일이 두 개의 상태를 가질 수 있음
- git add → 파일 수정 시 Staging Area에 있는 파일에는 수정내용이 반영되지 않아 ‘staged’ 와 ‘modified’ 상태를 가진다(staging Area에 있는 파일은 워킹 디렉토리의 파일이 옮겨지는 것이 아니라 복사되는 것).
modified 파일 되돌리기
- git checkout – sample.txt → 워킹 디렉토리의 modified 특정 파일을 가장 최근 커밋 버전으로 되돌릴 수 있음(수정 사항을 제거), 이 기능은 되돌릴 수 없으니 주의해야 함!
references
- https://seonkyukim.github.io/git-tutorial/git-status/
- https://seonkyukim.github.io/git-tutorial/git-status/