깃(Git)의 4가지 작업 공간
워크스페이스(workspace)
- 우리가 작업하는 일반적인 공간이며, 깃을 쓰기 이전의 처음 상태이다.
git add
명령어 이전의 변경 사항은 워크스페이스에 기록된다.
인덱스(index)
- 변경되는 모든 파일 및 폴더를 추적하는 공간이며, 스테이징 공간(staging area)로도 불린다.
git add
명령어로 워크스페이스 공간에 있는 작업물을 이 공간으로 보낸다.- 관심 있고, 최종적으로 커밋하고자 하는 작업물을 이 공간에 두면 된다.
- 한 번 인덱스에 올라갔던 파일은 깃에서 지속하여 추적한다.
로컬 레포지토리(local repository)
- 최종적으로 커밋된 작업물이 놓이는 공간이다.
git commit
명령어로 인덱스에 있는 파일을 이 공간으로 보낸다.- 최종적으로 작업한 내용이 이 공간에 기록된다.
리모트 레포지토리(remote repository)
- 깃 호스팅 공간으로, 인터넷으로 연결된 별도의 공간이다.
- 최종 작업물을 여기에 저장하고 타인과 공유한다.
- 여러 사람이 같이 협업할 때 이 공간을 사용한다.
git push
명령어로 로컬 레포지토리 공간에 있는 작업물을 이 공간으로 보낼 수 있다.git fetch
나git pull
명령어로 이 공간에 있는 작업물을 로컬 레포지토리로 가져올 수 있다.- 이 공간에 있는 작업물을 보통 협업에서 가장 최신 버전의 작업물이라고 간주한다.
- GitHub, BitBucket, GitLab 등이 이 공간을 구현한 깃 호스팅 서비스이다.
기본 동작 흐름
일반적인 작업 흐름
- 일반적으로 작업 흐름에서 공간은 워크스페이스 -> 인덱스 -> 로컬 레포지토리 -> 리모트 레포지토리를 거치게 된다.
1 |
|
- 위 두 가지 파일은 워크스페이스 공간에 놓여있다.
1 |
|
- 위에서 만든 작업물 중
a
에만 관심이 있다.(파일의 내용과 변경 히스토리 등을 추적하고 싶다.)
1 |
|
작업 내역 받아오기
- 위 과정을 개발자 A가 진행했고, 개발자 B가 이어서 작업하려고 한다.
- 만약 개발자 B가 A의 프로젝트를 처음 다운로드하는 상황에서는
git clone
을 사용한다.
1 |
|
- 만약 처음 다운로드하는 상황이 아니고, 업데이트된 작업 내역을 받아오고 싶다면
git pull
을 사용한다.
1 |
|
작업 공간 정리
1 |
|
정리
- 깃은 분산 버전 관리 도구로, 작업 내역을 저장할 수 있고 여러 사람과 협업할 때 필수적으로 쓰인다.
- 깃에는 워크스페이스, 인덱스, 로컬 레포지토리, 리모트 레포지토리의 4가지 공간이 있다.
- 보통 왼쪽에서 오른쪽 순으로 작업 흐름을 가져간다.
- 보통 리모트 레포지토리에서 최신 업데이트된 작업 내역을 받아온다.
- 리모트 레포지토리로는 GitHub, BitBucket, Gitlabs와 같은 깃 호스팅 서비스를 사용한다.