소스코드를 효과적으로 관리할 수 있게 해주는 분산 버전 관리 시스템인 무료, 공개 소프트웨어.
소스코드 관리 서비스
버전 관리 시스템
- 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템
- 3가지 ➡️ 로컬 버전 관리, 중앙집중식 버전 관리(CVCS) , 분산 버전 관리.
분산 버전 관리 시스템
✔️ 저장소를 히스토리와 더불어 전부 복제하여, 완전한 기록이 있는 자체 로컬 데이터베이스를 소유
✔️ 서버에 문제가 생기면 이 복제물로 다시 작업하여 서버에 전송할 수 있다는 말.
✔️ 각 파일에서 무엇이 변경되었는지, 언제 변경되었으며 누가 변경했는지, 변경한 이유도에 대해서도 알 수 있다.
👍 출처: https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control
Git은 파일을 Committed, Modified, Staged 이렇게 세 가지 상태로 관리한다.
⭐️ Committed
" 로컬 저장소 " 에 데이터 저장/갱신한 상태
⭐️ Modified
수정한 파일을 아직 " 로컬 저장소 " 에는 커밋하지 않은 상태
⭐️ Staged
현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태
👍 출처: https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control
⭐️ working 디렉토리 (워킹 트리)
프로젝트의 특정 버전을 Checkout 한 곳
깃 디렉토리 안에 압축된 데이터베이스에서 파일을 가져와서 워킹 트리를 만든다.
Checkout 하고 나서 수정했지만, 아직 Staging Area에 추가하지 않았으면 Modified인 상태이다.
⭐️ Staging Area
곧 커밋할 파일에 대한 정보를 저장하는 곳
파일을 수정하고 Staging Area에 추가했다면 Staged인 상태이다.
⭐️ Git 디렉토리
프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳
다른 컴퓨터에 있는 저장소를 Clone 할 때 Git 디렉토리가 만들어진다.
Git 디렉토리에 있는 파일들은 Committed 상태이다.
워킹 디렉토리에서 파일을 수정한다.
수정한 파일을 Staging Area에 stage 해서, 커밋할 스냅샷을 만든다.
Staging Area에 있는 파일들을 커밋해서, Git 디렉토리에 영구적인 스냅샷으로 저장한다.