나만의 공부 노트

FS2강 정리 본문

(2017) 스탠포드 강의

FS2강 정리

va95 2021. 2. 20. 20:30

Git

 

버전 관리 툴 Git

코드를 작업하다보면 수많은 버전의 코드를 만들어내게 됩니다.

어떨 땐 코드를 되돌려야할 때도 있고, 어떨땐 어떻게 수정했는지를 알아야하는 등 다양한 상황이 생기게 됩니다.

만약 단순히 코드를 작성하면 위와 같은 상황에 직면했을 때, 대응할 수 있는 방법이 없습니다.

그래서 git이라는 툴을 이용해 지난 코드를 어떻게 했는지 알아볼 수 있고, 또 여러 사람들과 협업하며 코드를 작성하기 매우 쉽습니다.

 

Commit

커밋은 코드의 현재 상태에 대해 스냅 샷을 찍는다고 생각하면 됩니다.

스냅샷에 들어가게 되는 내용은 작성자, 설명, 시간과 날짜입니다.

commit은 독립적으로 구성하는 게 좋습니다.(한 기능을 구현하고 커밋을 한 번 하는게 좋습니다.)

 

Braching

작은 commit이 하나하나 이어져 있는 모양을 코드 브랜치라고 합니다.

따라서 여러 브랜치를 만들 수 있습니다.

 

그러나 마스터 브렌치는 프로젝트의 중심점이 되는 브렌치이기 때문에, 마스터 브렌치는 항상 최신, 안정적인 상태를 유지해야 합니다.

새로운 기능을 추가하거나, 실험적인 기능을 개발할 때에는 새로운 브랜치를 만들고 작성 -> 안정화 과정을 거쳐 마스터 브랜치와 합쳐줍니다.

* 최근 master보다 main 브랜치로 이름을 바꾸어 사용하기 시작했습니다.


저장 구조

git init을 수행하면 .git이라는 하위 디렉토리를 생성합니다.

이 .git 폴더에는 저장소에 필요한 뼈대 파일들이 들어있습니다.

 

Working Directory

파일을 추가/수정/삭제하는 공간이라고 생각하면 됩니다.
쉽게 말해 .git 디렉토리를 제외한 프로젝트 디렉토리 내의 모든 공간이 Working Directory입니다.

 

Staging Area

보통 index라고 하며 저장소와 작업 디렉토리 중간에 있는 공간이고, 준비 영역의 역할을 합니다.
파일들이 커밋 되기 전에 모여있는 임시 저장 공간으로 모든 파일은 이 공간을 거쳐 저장소로 옮겨지게 됩니다.

 

Git Directory(Repository)

git이 실질적으로 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳을 말합니다.

커밋이 되면 .git 디렉토리에 스냅샷 형식으로 보관됩니다.


파일의 상태

워킹 디렉토리의 모든 파일은 크게 Tracked(관리대상 O)와 Untracked(관리대상 X)로 나뉩니다.

 

처음 저장소를 생성하고, 만든 모든 파일은 Untracked 상태입니다.

처음 저장소를 clone하면 모든 파일은 Tracked이면서 Unmodified 상태입니다.

만약 untracked 상태에서 track 상태로 바꾸고 싶다면, git add를 통해 등록해야합니다.

-> 이때 인덱스에 저장되며, 자동으로 staged 상태가 됩니다.

만약 tracked 상태에서 untracked 상태로 바꾸고 싶다면, git remove를 통해 제거해야합니다.

-> 인덱스에서만 지울지, untracked으로 만들지 선택할 수 있습니다.

 

tracked 상태에 있는 파일들은 수정이 되면 Modified 상태로 변경됩니다.

git add를 통해 modified 상태에 있는 파일들만 index에 저장 및 staged 상태로 만듭니다.

commit을 실행하면 staged 상태 파일들을 저장소에 저장 후, unmodified상태로 전환합니다.

 

untracked
추적되지 않은 파일은 모두 작업 디렉토리에 있는 상태이며, 인덱스나 저장소에는 한번도 들어간 적이 없거나 무시됨(ignored) 상태의 파일

unmodified
저장소에 커밋 된 파일이 수정되지 않은 상태

modified
이미 커밋 되었던 파일이 수정된 상태

staged/indexed
수정된 파일이 인덱스에 포함된 상태

ignored
.gitignore 혹은 .git/info/exclude 에 설정되어 있는 패턴에 의해 파일 또는 폴더를 무시할 수 있습니다.

 


git remote add origin "http..." 명령어를 통해 origin은 리모트 저장소의 주소를 갖고 있다.

 

git 원리 이해 완료!

'(2017) 스탠포드 강의' 카테고리의 다른 글

10강 정리  (0) 2021.02.21
9강 정리  (0) 2021.02.21
8강 정리  (0) 2021.02.20
7강 정리  (0) 2021.02.19
6강 정리  (0) 2021.02.19