버전 관리 시스템 (Version Control System, VCS)의 하나로 버전을 관리할 수 있는 수단이다.
파일의 변화를 시간의 흐름에 따라 기록하고 이후에 필요한 상황에서 필요한 파일을 가져올 수 있는 시스템이다. 또한 작성자도 기록이 되기에 누가 언제 문제를 일으켰는지 파악하기 쉽다.
예시)
'과제1'을 덮어쓰기 한 경우 처음의 '과제1'을 불러올 수 없지만,
'과제1_0405', '과제1_0407', '과제1_0409'와 같이 파일을 버전별로 따로 저장하면 필요한 버전을 꺼내 쓸 수 있다.
Git은 VCS중 분산 버전 관리 시스템(Distirbuted VCS)이다.
DVCS는 파일의 마지막 snapshot을 사용하지 않고 저장소를 히스토리를 포함하여 모두 복제하기 때문에 서버에 문제가 생겨도 복제를 통해 다시 복원할 수 있다.

이 방식을 사용하면 복구가 쉽고, 서버의 문제가 있어도 로컬의 데이터로 작업할 수 있으며, 원격 저장소에 올리기 전이면 다른 개발자에게 영향 없이 수정 할 수 있다.
git과 github는 뗄 수 없는 관계이다.
두 개념이 헷갈리기 때문에 정리가 필요하다.
즉 GitHub는 Git이라는 소프트웨어를 클라우드로 운영되는 웹 서비스이다.
Repository(저장소)
Working Tree
Index(Staging Area)
Commit
Checkout
Branch
Merge
git init : Git 저장소를 만드는 명령어 .git폴더가 생성된다.
git status : 깃 저장소의 상태를 확인한다.
git add : 커밋에 파일의 변경 사항을 포함하도록 한다.
git commit : "git commit -m '저장명'" 등과 같은 명령어로 주로 사용한다. 이 명령어를 통해 커밋을 생성하고, 변경 사항을 확정하여 반영한다.
git clone : 원격 저장소의 저장소를 로컬에서 이용할 수 있도록 복사해 가져온다.
git log : 현재 커밋 목록들을 확인 가능하다.
git checkout : 현재 버전에서 이전 버전의 커밋으로 이동하거나 변경 전의 브랜치로 접근 가능하다.
git push : 소스 코드의 변경 사항을 원격 저장소에 반영한다.
git pull : 원격 저장소의 변경 내용이 현재 디렉토리로 가져와진 뒤, (fetch) 병합된다.
git merge : 브랜치들을 병합한다. 작업 마무리 단계에서 시행한다.

장점
단점

장점
단점
작은 조직이나 개발의 볼륨이 작다면 빠르고 간소화된 파이프라인을 갖고 있는 GitHub-Flow
체계적이고 관리의 책임이 명확해야하는 프로젝트 Git-Flow