형상관리 영역 중 버전 관리를 위한 분산 버전 관리 시스템(Distributed Version Control System)
Snapshot 방식으로 버전을 저장 (포인터 형태로 모든 내용이 기록)
과거에 국내에 많이 사용되던 Svn 보다 빠름, 자유로운 버전 생성과 공유, 원할한 복구
Master, Branch + Head(Branch의 마지막 commit 지점을 가리킴)로 구성
반드시 기억해야할 기본 흐름
반드시 인지해야할 기본 용어
Repository Git이 프로젝트의 모든 파일과 이력을 저장하는 저장소 (Local과 Remote(Origin) 영역에 존재)
Commit Git에서 변경 사항을 저장하는 단위 (파일 수정 사항 저장, 각 고유한 해시 값 보유, 시간 순서대로 나열)
Branch 저장소의 특정 버전을 가리키는 포인터 (새로운 기능을 개발하거나 버그를 수정하기 위해 브랜치를 만들어 작업)
Merge 브랜치에서 작업을 완료한 후, 다른 브랜치에 변경 사항을 통합하는 과정
Pull Request 다른 개발자에게 변경 사항을 검토하고 병합해달라고 요청하는 메커니즘 (주로 원격 저장소에서 사용)
Clone 원격 저장소에서 로컬로 프로젝트를 복제하는 작업
Pull 원격 저장소에서 변경 사항을 가져와 로컬 저장소를 업데이트하는 작업
Push 로컬 저장소의 변경 사항을 원격 저장소에 업로드하는 작업
Conflict 동시에 같은 파일 또는 코드 부분을 수정하고 커밋할 때 발생하는 충돌 상황 (수동으로 코드를 수정)
Staging Area 변경한 파일 중에서 어떤 파일을 다음 커밋에 포함시킬지 선택하는 공간 (git add 명령어를 사용하여 파일을 스테이징 영역에 추가하고, 이후 git commit 명령어로 커밋)
Head 현재 작업 중인 브랜치의 가장 최신 커밋을 가리키는 포인터
SHA (Secure Hash Algorithm) 각 커밋과 객체를 고유하게 식별하는 해시 값 (커밋을 참조할 때 해시 값으로 식별)
Rebase 기존 브랜치의 커밋 히스토리를 변경하거나 재구성하는 작업 (주로 커밋 히스토리를 깔끔하게 유지하거나 다른 브랜치와 통합할 때 사용)
git status 현재 작업 진행중인 상태 (add, conflict 등 commit 진행되기 전의 모든 내용 표시, commit 이후 상태 초기화)
git log commit된 이력 조회
git add * 모든 파일을 형상관리 파일로 등록 (untracked 상태의 파일을 unmodified상태로 변경)
git commit -m "message" commit 하기
git branch Master상태에서 Branch 생성
git checkout br 작업공간을 br Branch로 이동