Git이란??
프로젝트 할 때 많이 사용하는 Git
많이 들어는 봤는데 개념이 궁금하신 분들을 위해서 작성했습니다 :)
Git
- 소스코드를 효과적으로 관리하기 위해 개발된 ‘분산형 버전 관리 시스템’
- 소스 코드 변경 이력을 쉽게 확인 가능, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있음
Git Repository
- 파일이나 폴더를 저장해 두는 곳
- 파일이 변경 이력 별로 구분되어서 저장됨
- 종류
- 원격 저장소(Remote Ropository)
- 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소
- 로컬 저장소(Local Repository)
- 내 PC에 파일이 저장되는 개인 전용 저장소
- 원격 저장소(Remote Ropository)
- 로컬 저장소 만드는 방법
- 새로운 저장소 생성
- 만들어져 있는 원격 저장소를 로컬 저장소로 복사
Commit
- 파일 및 폴더의 추가/변경 사항을 저장소에 기록하는 것
- Commit를 하면 이전 커밋 상태~현재 상태까지의 변경 이력이 기록
- 버그 수정, 기능 추가 등 특별한 의미가 있는 업데이트를 작업 별로 구분해서 각각 커밋하는 것이 베스트
작업 트리(Work tree)와 인덱스(Index)
- 작업 트리(Work Tree): 우리가 흔히 말하는 폴더
- 인덱스(Index): 커밋을 실행하기 전의 저장소와 작업 트리 사이에 존재하는 공간
- 인덱스 등록 or 스테이징(stage): 파일을 기록
푸시(Push)하기
- 웹 상의 원격 저장소로 변경된 파일을 업로드 하는 것
- push 실행하면 원격 저장소에 내 변경 이력이 업로드, 원격 저장소와 로컬 저장소가 동일한 상태가 됨
클론(Clone)하기
- 변경 이력이 적용된 원격 저장소가 있으면, 그걸 웹에서 통째로 복제해와 내 PC에서 직접 작업할 수 있음
- 변경 이력도 함께 로컬 저장소에 복제되어 오므로, 원래 원격 저장소와 똑같이 이력을 참조하고 커밋을 진행할 수 있음
풀(Pull)하기
- 원격 저장소에 최신 변경 이력을 다운로드하여 내 로컬 저장소에 그 내용을 적용
병경 이력 병합(Merge)하기
내가 끌어온 저장소가 최신 버전이 아닌 경우, 즉 내가 pull을 실행한 후 다른 사람이 push하여 원격 저장소를 업데이트 해버린 경우 아래의 그림과 같이 내가 push 요청이 거부되는 경우가 발생
다른 사람의 업데이트 이력을 내 저장소에도 갱신 해야 함. 만약 병합(merge)하지 않은 채로 이력을 덮어쓰게 되면 다른 사람이 push 한 업데이트 내역이 사라져 버리기 때문