: 분산형 버전 관리 시스템. 소스코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수 있음.
Commit(커밋)
: 파일 및 폴더의 추가/변경 사항을 저장소에 기록
이전 커밋 상태 ~ 현재 상태까지의 변경 이력이 기록된 커밋이 만들어짐.
Work tree(작업트리) : 폴더
Index(인덱스) : 커밋을 실행하기 전의 저장소와 작업트리 사이에 존재하는 공간
인덱스 까지 기록(staging)하고 저장소에 커밋(commit).
기록하려는 모든 변경 사항들은 '인덱스'에 존재해야함.
Push(푸시)
: 로컬 저장소의 변경된 이력을 원격 저장소에 공유할 때, 로컬->원격 업로드 해야함.
결과 - 원격 저장소와 로컬 저장소가 동일한 상태가 됨.
Pull(풀)'
: 원격->로컬 저장소로 가져오기
Clone(복제)
: 원격 저장소 복제하기. 누군가의 변경 이력이 적용된 원격 저장소가 있을 때, 통째로 복제해와 내 PC에서 작업가능.
merge(병합)
: 변경이력 병합하기. 내가 Pull한 저장소가 최신 버전이 아닌 경우(다른사람이 Push로 업데이트한 경우) 내 Push요청이 거부된다. 이런 경우 merge하여 다른 사람의 업데이트 이력을 내 저장소에도 갱신함.
만약 병합하지 않은채로 이력을 덮어쓰면 다른사람이 Push한 내역이 사라져버림.
충돌 수동으로 해결
: 경우에 따라 자동으로 merge할 수 없는 경우(원격과 로컬 양쪽에서 동일한 부분을 변경한 경우)엔 어느쪽으로 저장할지 자동으로 판단 할 수 없기 때문에 충돌이 일어난다.
==== 위로 로컬저장소, 아래는 원격 저장소의 변경 내용.
충돌 부분을 수정하고 다시 commit하기