Git이란?
Git이란 소스 코드를 관리하기 위해 개발된 분산형 버전 관리 시스템이다. Linus Benedict Torvalds(linux 개발)가 linux 소스코드를 관리할 목적으로 개발했다.
Git은 branch 기능을 제공하여 같은 파일을 여러 명이 동시에 작업하고 합치는 식(merge)의 병렬 개발이 가능하다. 또한, Git은 로컬에 원격 저장소의 모든 데이터를 복제하여 인터넷이 연결되지 않은 환경에서도 개발을 진행할 수 있고, 중앙 저장소의 데이터가 사라져도 원상 복구할 수 있다.
Git으로 소스 코드를 관리하면 소스 코드 변경 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌릴 수 있어서 버전 관리를 효율적으로 할 수 있고, 협업 시에도 유용하다.
Git의 3가지 작업 영역
Git은 Working Directory, Staging Area, Git Directory(Repository) 3가지 작업영역으로 파일들을 관리한다.
- Working Directory : 소스 코드를 작업하는 프로젝트 디렉토리, Git이 추적 중인 파일들이 위치
- Staging Area : commit 할 준비가 된 파일들이 위치하는 영역. working directory에서
git add
명령어로 추가한 파일들이 모여있는 영역
- Git Directory(Repository) : 버전을 관리하는 파일들이 위치하는 영역. staging area에 있는 소스 코드에
git commit
명령을 실행하면 최종적으로 Git 저장소에 저장됨.
Git의 3가지 상태
Committed
란 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미한다.
Modified
는 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말한다.
Staged
란 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미한다.
파일 관점에서 Git의 4가지 상태
- Untracked : Working Directory에 있는 파일이지만 Git으로 버전관리를 하지 않는 상태
- Unmodified : 신규로 파일이 추가되었을 때, new file 상태와 같음
- Modified : 파일이 추가된 이후 해당 파일이 수정되었을 때의 상태
- Staged : Staging Area에 반영된 상태
Git 기본 용어 정리
- repository: 저장소. Git으로 버전 관리하는 디렉토리를 의미
- local repository: 로컬 저장소. 작업자의 개발환경(pc)에 설정된 Git 저장소
- remote repository: 원격 저장소. GitHub 등 외부 서버에 설정된 Git 저장소
- commit: 특정 상태를 기록한 버전.
- branch: 또 다른 작업 공간. 브랜치를 이용하면 코드를 여러개로 복사한 후, 이전의 코드와는 독립적으로 개발할 수 있다.
- merge: 특정 브랜치에서 작업한 내용을 또 다른 브랜치에 적용하는 것을 의미
- push: 로컬 저장소의 수정사항을 원격 저장소에 업로는 하는 것
- pull: 원격 저장소에서 로컬 저장소로 다운로드 하는 것
참고