분산 버전관리 시스템
저장소(repository)로 관리된다.
원격 저장소를 바탕으로 로컬 저장소를 여러개 둔다.
실제로 작업할 장소는 로컬 저장소이다.
로컬 저장소는 git으로 관리하고
원격 저장소는 github으로 관리한다.

remote는 github
로컬 repository의 경우는 workspace, index(staging), local repository 세 개로 나눠진다.
workspace는 unstaged상태이다.
여기서 add를 하면 staged 상태가 된다.
여기서 commit을 하면 commited 상태가 된다.
unstaged + add -> staged,
staged + commit -> commited
코드의 흐름을 분산하는 것

default 브랜치는 main(master)이다.

develop branch를 생성했다.

develop branch로 이동했다.
현재 작업중인 브랜치를 원하는 브랜치에 병합하는 것
(여기서는 develop을 main으로 merge 한다)
(Head는 현재 내가 작업중인 브랜치를 가리킨다.)

merge의 방식에는 fast-forwad 말고도 많은 방법이 있다.
두개의 브랜치가 합쳐졌고, develop가 더이상 필요가 없어졌다면, git branch -d 브랜치이름 으로 삭제할 수 있다.
한 브랜치에서 다른 브랜치로 병합할 때 사용
다른 환경에서 이전 repository 정보를 가져올 수 있다.
git clone 깃헙저장소@주소