Repository는 사용자의 파일들이 위치한, "깃이 주시하고 있는 폴더(저장소)"이다.
Repository는 .git이라는 폴더를 가지게 되고, 이 폴더에는 깃에 관련된 명령어나 파일, 히스토리들이 있다.
깃은 해당 폴더를 통해 Repository 내부의 변경사항들을 추적할 수 있다.
이러한 Repository 에는 2가지 버전이 있는데:
1) Local Repository: 로컬 저장소. 개인 컴퓨터에 저장된 파일. 깃헙을 다룰 땐 깃헙 데스크탑에만 커밋된 상태. "origin" 이라고 불리기도 한다.
2) Remote Repository: 전용 서버에서 관리되는 원격 저장소로 팀원들과 공유 가능하다. 깃헙 데스크탑에서 깃헙 레퍼지토리로 퍼블릭 커밋된 상태.
커밋은 기본적으로 작업에 대한 기록이다.
작업중인 폴더에 어떤 변경사항이 있을 때 그것을 히스토리로 기록하고 싶을 때 사용한다.
Git workflow(Git Area)는 기본적으로 3단계로 나눠져 있다. (위 그림의 까만 부분)
1. Working Directory(Unstage Area)
우리가 현재 작업하고 있는 폴더로 생성, 수정, 삭제한 파일들이 있는 디렉토리.
git add (파일명) 명령어로 working directory 에 파일을 올려 놓을 수 있으며, 이 때부터 git 이 이 파일을 추적하기 시작한다.
ex. Visual Studio Code 와 같은 IDE 에서 작업중인 상태
2. Staging Area
Index라고도 부르며 , 변경사항이 있는 파일들을 선택해 커밋할 수 있도록 지정하는 곳
(버전을 만들기 위해 준비 중인 파일들의 스냅샷 데이터가 저장된 곳)
ex. Github Desktop 에서 변경사항 중 커밋할 사항 선택하는 상태
3. Git Directory(Local Repository)
파일들이 커밋된 곳으로, 파일들의 변경사항에 대한 스냅샷을 가지고 있는 곳
(Staging Area를 거쳐 만들어진 버전들이 저장된 곳)
ex. Github Desktop 에서 커밋할 변경사항들을 선택해서 커밋한 상태
브랜치는 main 또는 master 브랜치의 마지막 커밋으로부터 다른 타임라인을 가지게 될 부분입니다.
독립적으로 어떤 작업을 진행하기 위한 개념으로, 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니다.
예를 들어, 메인 시나리오를 적고, 다양한 엔딩을 적어본 뒤에, 마지막에 가장 마음에 드는 엔딩을 골라 메인 시나리오에 가져와 소설을 완성하는 것과 같은 과정이라고 생각할 수 있습니다. 이러한 과정을 3가지로 나누어 설명해보겠습니다.
메인 브런치에서 토대가 될 코드를 작성합니다.
2. Master Tip or Feature Tip part
master branch 의 수정사항과 내가 만든 또다른 branch 의 수정사항이 발생합니다. master 에서 생긴 수정사항을 현재 작업중인 branch 에도 적용하고 싶다면, 현재 작업중인 브런치의 상태에서 상단의 branch > update from default branch 를 통해 가능합니다.
3. New Merge Comit part
메인 브런치에 원하는 버전의 브런치를 통합할 때입니다. 메인 브런치로 이동해 branch > merge into current branch 를 클릭하면 됩니다.
이제 원하는 버전의 변화가 메인 브런치에 모두 적용이 되었기 때문에, 기존 원하는 버전의 브랜치를 포함한 다른 버전의 브랜치들은 삭제해도 좋습니다.
이 강의를 진작 봤다면 Netflix 클론할 때 다양한 버전 시도해보느라 각 버전의 파일을 따로 만들고 버전별로 깃 레퍼지토리를 만들 필요가 없었을 텐데...... 이제라도 알아서 다행인가. 고생을 해봐서 더 머리에 잘 들어오는건가. 아무튼 아직 Netflix 작업 사항 좀 남았는데 이번 니코쌤 happy-ending, sad-ending 처럼 작업해 봐야겠다.