Git 기본 동작 원리 (4가지 공간)
1) Working Directory : 작업하는 파일이 있는 디렉토리
2) Staging Area : Git에 등록할 (커밋) 파일들이 올라가는 영역
3) Local Repository (로컬 저장소) : 로컬 Git 프로젝트의 메타데이터와 데이터 정보가 저장되는 영역
4) Remote Repository (원격 저장소) : Github 등의 서비스를 통한 온라인 상의 저장소
Working Directory -> (git add) -> Staging Area -> (git commit) -> Local Repository -> (git push) -> Remote Repository -> (git fetch) -> Local Repository -> (git merge) -> Working Directory
Git 기본 용어
1) origin : 원격 (Github 등의 온라인 저장소)에 있는 코드
2) head : 내가 지금 작업하고 있는 로컬 브랜치
3) add : Working Directory에서 Staging Area로 등록하다
4) commit : Staging Area에 등록된 파일을 Local Storage로 등록
5) commit Message : commit 시 함께 작성해 저장하는 메시지 (메모)
6) push : Local Storage에서 변경된 파일들을 Remote Repository로 등록
7) fetch : Remote Repository의 변경된 파일들을 Local Repository로 전달
8) merge : Local Repository의 변경사항을 Working Directory로 전달
9) Branch : 독립적으로 어떤 작업을 따로 진행하기 위한 가지
10) checkout : 사용할 다른 브랜치/시점을 지정
Local Repository
Repository : 파일이나 폴더를 저장하는 곳, Git 저장소는 파일 변경 이력 별로 구분되어 저장됨
snapshot : 파일이나 폴더를 사진을 찍듯 순간의 상태를 저장
내 PC에 파일이 저장되는 개인 전용 저장 공간
생성 : git init을 통해 생성
원격 저장소에서 복사해서도 생성 가능
Remote Repository
파일이 전용 서버(Github) 에서 관리되며 여러 사람이 함께 공유
생성 : Github를 통해 생성
Clone ?
로컬에서 작업하기 위해 Remote Repository를 복제해 내 PC에 Local Repository로 저장하는 것
Clone 실습 (소스트리 이용)
1) Github 원격 저장소에서 SSH 주소 복사
2. URL에서 복제 선택 -> 복사한 SSH 주소 입력, 복사할 폴더 설정, 이름 설정
이 부분에서 url 인식이 되지 않아 실랑이 끝에 겨우 클론 가능하였다ㅜ
SSH를 사용하여 Clone하거나 연결된 github을 통해 할 수 있다.
3. clone 완료
clone 받은 파일에 .git이 생긴 것을 볼 수 있다.
Add, Commit, Push, Pull
1) Add ?
변경된 파일 중 Repository에 올릴 파일들을 등록한다.
Working Directory -> Staging Directory
2) Commit ?
Add로 등록된 파일들을 한 덩어리로 만들고 메시지 추가해 로컬저장소에 올린다
Staging Directory -> Local Directory
3. Push ?
Commit되어 로컬 저장소에서 변경이 된 파일들을 원격 저장소로 전달한다
Local Directory -> Remote Directory
* 히스토리와 체크아웃
히스토리의 원하는 시점에서 오른쪽 클릭 후 Checkout하면 Head가 이동되고 작업 소스가 HEAD 시점의 상태로 변경된다
4. Pull ? (Fetch + Merge)
원격 저장소의 변경사항을 로컬 저장소로 가져옴과 동시에 내 작업 소스에 합친다
Fetch : 원격 저장소의 소스를 로컬 저장소로 받아와 일치 시킨다. (내 작업 소스에는 반영 X)
Merge : Fetch해 온 로컬 저장소의 소스를 내 작업 소스에 합친다. (합칠 때 같은 부분의 소스가 다를 경우 충돌 발생)
Remote Repository -> (Fetch) -> Local Repository -> (Merge) -> Working Directory
* Pull하는 상황은 언제 발생할까? (동기화)
원격 저장소는 여러 프로젝트 개발 인원들이 동시에 사용한다
다른 개발자가 변경상태를 Push해 원격 저장소에 반영한다면 내 입장에서는 원격 저장소에 변경사항이 발생한 것
다른 개발자가 Push해 원격 저장소가 변경되어 Pull 할 거리가 생기면 상단 풀 아이콘에 숫자가 생긴다
히스토리에도 origin과 로컬 저장소의 현재 시점이 다르게 표시
Branch
Main(Master) : 기준이 되는 버전
브랜치 이름 작성 후 생성 -> 새 브랜치 체크아웃 (현재 작업 소스를 해당 브랜치의 상태로 변경 - Head의 이동)
Merge
각각의 브랜치에서 작업이 완료된 후 통합 브랜치(Main)로 모아 합치는 작업
'Web Develop' 카테고리의 다른 글
컴퓨터 구조 - 시스템 소프트웨어 (5) | 2023.06.22 |
---|---|
1. 설치 및 셋업 [Git / Github] for Windows (0) | 2023.06.20 |
댓글