파일의 변경 이력을 관리하고 협업을 효율적으로 지원하는 도구
브랜치
: 개발의 다양한 단계나 기능을 분리하여 관리할 수 있다.
이를 통해 여러 기능을 동시에 개발하고 통합하는 것이 용이하다.
협업
: 여러 개발자가 동일한 프로젝트에서 병렬로 작업할 수 있게 지원한다.

Project Source Code (Working Directory 안에 존재)
: 소스코드가 있는 프로그램 작성 파일로 일반적으로 workspace에 해당하는 디렉토리(폴더) 안에 작성된다.
(HTML Project, Java Project, Dynamic Web Project, Springboot Project, React Project 등)
- Staging Area (=Index Area)
: 커밋 할 것들을 담아놓는 임시 공간, 커밋 하나에 포함할 변경 사항을 선택할 수 있기 위함(’버그 수정’과 ‘신기능 추가’를 구분해서 커밋할 수 있다.)
Local Repo (=지역 저장소, .git directory)
: 프로그래머가 프로젝트 소스코드를 개발중인 컴퓨터에 마련하는 지역 저장소
Remote Repo (=github)
: 작업중인 컴퓨터가 아닌 원격지에 마련하는 원격 저장소 혹은 공유 저장소로 github나 gitlab이 이에 해당됨
Git Bash
: CLI 방식으로 Git을 사용할 수 있는 환경
CLI(Command Line Interface) - 명령어를 입력하는 방식
GUI(Graphic User Interface) - 마우스로 클릭하는 방식
GUI 방식으로 제공되는 툴(소스트리 등)도 다양
add
: 프로젝트 파일로부터 변경된 것을 Staging Area에 올리는 작업
commit
: Local Repo로 Staging Area에 있던 것을 저장하는 작업을 ‘커밋한다’고 하며 이렇게 저장된 어느 시점의 프로젝트의 상태를 리비전(revision) 혹은 커밋이라고 한다.
push
: Local Repo에만 있던 것을 Remote Repo로 올리는 작업
fetch
: Remote Repo로부터 필요한 파일을 Local Repo로 받음(변경 내역)
merge
: Local Repo에 있는 변경 사항을 Project에 직접 합치면서 반영하는 작업
(Remote Repo에서 받은 것과 내 Project 간에 conflict(충돌)이 발생할 수 있음)
pull
: fetch와 merge를 한번에 처리할 때 사용
(merge를 포함하고 있으므로 merge와 마찬가지로 conflict가 발생할 수 있음)