
2005년 리누스 토르발스가 개발한 분산형 버전 관리 시스템(DVCS)이다.
주로 컴퓨터 파일의 변경사항을 추적하고 여러명의 사용자들 간에 파일에 대한 작업을 조율할 때 사용한다.
(주로 여러명의 개발자가 소프트웨어 개발 프로젝트에 참여할때 코드를 관리할 때 사용!)
GitHub은 Git 버전 관리 시스템을 사용하는 웹 기반 호스팅 서비스로, 주로 소프트웨어 개발 프로젝트의 소스 코드 관리에 사용된다.
-> github에서 만든 repository는 remote repository 의 한 예시이다.
코드를 작성할 때 파일 변경내역을 저장하는 것이 필요한데 git을 사용함으로써 깔끔하게 버전관리를 위해 사용한다.
git으로 관리하는 프로젝트 저장소를 의미한다.
Staging area는 커밋하기 전 변경 사항을 임시로 저장하는 공간을 의미한다.
의미있는 변경 작업들을 repository에 기록하는 동작을 의미한다.
여러 사용자가 독립적으로 작업을 진행할 수 있도록 도와주는 작업 흐름이라고 생각하면 된다
(Branch example)

위 사진에서 나와 다른 사람이 독립적으로 작업을 진행하고 있는데 이때 내 작업하고 다른 사람의 작업을 branch라고 생각하면 된다!
영어로 합병이라는 의미로 여기 git에서는 다른 branch 내용하고 합치는 작업을 의미한다.
현재 작업중인 branch를 가르킨다.
git 저장소를 초기화하고(생성) .git폴더가 생성된다.
현재상태를 확인
file을 staging area에 추가한다.
('git add .'명령어는 '.'이 현재 디렉토리를 의미하므로 현재 디렉토리 내에 있는 파일을 모두 추가한다)
staging area에 있는 추가된 파일들을 커밋 한다. 커밋 메시지는 보통 변경사항에 대한 설명으로 한다!
-> 변경사항이 local repository 에 기록
url remote repository 에 있는 내용을 컴퓨터로 가져온다.
git url 에 remote(저장소) 이름으로 등록한다.
local repository 내용을 remote repository로 보낸다.
리모트 레포지토리의 내용을 로컬 레포지토리로 가져온다.
'name'이라는 이름의 branch를 생성한다.
'name'이라는 이름의 branch 로 head를 전환한다.
'name'이라는 이름의 branch 내용을 현재 branch 와 합친다.
-> merge confilct