Git은 VCS(Version Control System) 중 하나로 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있도록 해주는 무료, 공개 소프트웨어이다.
VCS (Version Control System) == SCM (Source Code Management) < SCM (Software Configuration Management: 형상관리)
형상관리는 버전관리보다 더 큰 개념이다.
소스코드를 깃허브와 같은 클라우드플랫폼에서 사용할 경우 CLI커맨드로 버전관리를 수행해야하기 때문에 CLI커맨드로 git을 사용할 줄 알면 GUI도구가 제공하는 기능에 대한 이해가 빠를 수 있다.
- Blob: 파일 하나의 내용에 대한 정보
- Tree: Blob이나 subtree의 메타데이터(디렉토리 위치, 속성, 이름 등)
- Commt: 커밋 순간의 스냅샷
- 원격 저장소 (remote repository)
- Upstream Repository : 개발자들이 공유하는 저장소로 최신 소스코드가 저장되어 있는 원격 저장소
- Origin Repository : Upstream Repository를 Fork한 원격 개인 저장소
- 로컬 저장소 (local repository)
Local Repository : 내 컴퓨터에 저장되어 있는 개인 저장소
- Committed: 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미한다.
- Modified: 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말한다.
- Staged: 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미한다.
git add
를 통해 staging area에 파일을 stage해서 커밋할 스냅샷을 만든다.git commit
을 통해 내컴퓨터에 저장되어 있는 개인저장소(localrepo)에 저장한다.git push
를 통해 원격저장소(Remote repo)에 저장한다.
- working directory
- 사용자가 지금 사용하고 있는 컴퓨터에 있는 작업 디렉토리를 의미.
- 아직 버전으로 만들어지기 전 단계.
- staging area
- 사용자가 설정한 파일들이 임시적으로 저장되는 공간.
- staging area에 올라온 파일들은 git이 모든 변경사항을 추척하게 된다.
- 버전을 만들려고 하는 파일들이 이에 해당.
- local repo
- staging area의 파일들을 최종적으로 우리 컴퓨터에 저장하는 저장소.
- ex) github저장소
- 만들어진 버전 파일들이 포함된다.
개발을 진행하며 작성하는 소스코드가 업데이트 되는 버전을 기록해두고 관리할 수 있는 소스코드 버전 관리 시스템. 트리이다.
git이라는 도구를 위한 원격저장소 서비스(Cloud REmote REpository Services)를 하는 웹서비스이다. (이러한 웹서비스에는 Gitbub외에도 Bitbucket과 GitLab이 있다.)