Skip to content

Latest commit

 

History

History
56 lines (36 loc) · 3.44 KB

1-2_ git의 4가지 작업영역.md

File metadata and controls

56 lines (36 loc) · 3.44 KB

git의 4가지 작업영역

깃(Git) 은 버전관리를 해주는 프로그램이라 했고,
깃으로 내 컴퓨터의 폴더를, 버전관리가 되는 저장소(repo) 로 사용할 수 있었다.
깃허브(GitHub) 로는 그 저장소를 원격(깃허브 사이트)으로 저장해 사용할 수 있었는데,

그렇다면 Git은

  1. 로컬(=내 컴퓨터 폴더에 있는) 저장소
  2. 원격(=깃허브에 있는) 저장소

2개의 영역으로 나뉠까?

(괜히 물어본다고 흔들리지 말자)당연히 맞는 말인데, 크게보면 위처럼 로컬(local)과 원격(remote) 2가지지만,
자세하게는 로컬 저장소 안에서만 3가지 영역으로 나뉘기에, 4가지 작업영역 으로 나뉜다.

와우

화살표에 쓰인 글자는 다름아닌, 다른 영역으로 넘어갈 때 사용하는 명령어들이다. (뒤에 차근차근 배울 것들이기도 하다.)

로컬 저장소 안에서도 영역이 왜 나뉘어?

사실 내 컴퓨터에 중앙 저장소에서 때어낸 로컬 저장소를(내 컴퓨터의 한 폴더로) 만들었다고, 깃이 그안의 모든걸 버전으로 저장하지 않는다.
git에서는 버전으로 올릴 것들을 선택할 수 있다.
심지어 선택도 2번(add -> commit)의 과정을 거친다...

그래 뭐 내가 폴더의 모든걸 버전으로 저장하고 싶지 않을 수도 있으니,
버전으로 올릴걸 선택할 수 있는 과정은 그렇다고 친다.

근데 왜 굳이 그걸 한번에 버전으로 올리지 않고, 2번의 과정을 거쳐 버전에 올릴까?

사실 다른 버전 관리도구도 한번에 버전으로 올릴 수 있게 해주고, git만 굳이 2번의 과정을 거친다.
이것은 git의 깊은 뜻이 있는데, 이 곳의 설명(Git의 Staging Area는 어떤 점이 유용한가)을 참고하기 바란다.

로컬 저장소 안의 3가지 작업 영역

요로코롬

  • working directory(=working tree)

    내 컴퓨터의 폴더 영역이다. (걍 로컬 저장소 폴더 안에 있다고 다 실제 저장소에 저장되는 것이 아니다.)
  • staging area(=index)

    이 폴더 안에서 내가 실제 저장소에 올릴만한(준비중인) 내용들이 모여있는 영역이다.
    이 영역에 내용을 올리는 것이 staging(스테이징) 이라고 한다.
  • repository

    실제 로컬 저장소 영역이다.

그래서 로컬 저장소가 위치하는 내 폴더에 파일을 수정해도 당장은 실제 저장소랑은 상관이 없다.

  • add 명령어로 폴더(=working directory)안에서 저장소에 올릴만한 정보를 선택할 수 있으며,
  • commit 명령어로 저장소에 올릴만한 정보 영역(=스테이지, staging area)에 있는걸 실제 저장소(repository)에 올린다.

image

같이보면 좋은 거