2020/06/21 - [🗂️git] - [Git / Git Hub] 탄생배경 및 간단한 소개
2. Git의 기본
저장소 : (원격 저장소 / 로컬 저장소)
저장소(Git repository)란 말그대로 파일이나 폴더를 저장해 두는 곳이다. 그런데 Git 저장소가 제공하는 좋은 점 중 하나는 파일이 변경 이력 별로 구분되어 저장된다는 점이다. 비슷한 파일이라도 실제 내용 일부 문구가 서로 다르면 다른 파일로 인식하기 때문에 파일을 변경 사항 별로 구분해 저장할 수 있다.
git은 원격 저장소와 로컬 저장소 두 종류의 저장소를 제공한다.
- 원격 저장소(Remote Repository) : 파일이 원격 저장소 전용 서버에 관리되며 여러 사람이 함께 공유하기 위한 저장소. 예를 들어, github가 존재한다.
- 로컬 저장소(Local Repository) : 내 PC에 파일이 저장되는 개인 전용 저장소.
내 컴퓨터에 로컬 저장소를 만드는 법은 두 가지 이다.
첫 번째, 아예 저장소를 새로 만들거나, 두번째, 이미 만들어져 있는 원격 저장소를 로컬 저장소로 복사해 올 수 있다.
Commit(커밋)
파일 및 폴더의 추가/변경 사항을 저장소에 기록하려면 '커밋'이란 버튼을 눌러줘야 한다.
커밋 버튼을 누르면 이전 커밋 상태부터 현재 상태까지의 변경 이력이 기록된 커밋(혹은 리비전)이 만들어진다. 커밋은 아래 그림처럼 시간순으로 저장된다. 최근 커밋부터 거슬러 올라가면 과거 변경 이력과 내용을 알 수 있을 것이다.
각 커밋에는 영문/숫자로 이루어진 40자리의 고유 이름이 붙는다. 저장소에선 이 40자리 이름을 보고 각 커밋을 구분하고 선택한다. 커밋은 이렇게 이력을 남기는 중요한 작업이기 때문에 커밋을 할 때 커밋 메세지를 필수로 입력해야 한다. 메세지가 없으면 커밋이 실행되지 않는다.
메세지는 명료하고 이해하기 쉽게 남겨야 본인 뿐만 아니라 다른 사람이 커밋 이력을 확인하기 쉽다. Git에서 권장하는 메세지 형식을 따르는 것이 좋다.
Work tree / Index
Git 에서는 우리가 흔히 말하는 폴더를 '작업 트리'(Work Tree)라고 부른다. 현재 작업하고 있는 공간이라 생각하자.
그리고 커밋을 실행하기 전의 저장소와 작업 트리 사이에 존재하는 공간을 '인덱스'라고 한다.
Git의 '커밋' 작업은 '작업 트리'에 있는 변경 내용을 저장소에 바로 기록하는 것이 아니라 그 사이 공간인 '인덱스'에 파일 상태를 기록(stage - 스테이징 한다고 표현하기도 한다.)하게 되어 있다.
따라서 저장소에 변경 사항을 기록하기 위해서는, 기록하고자 하는 모든 변경 사항들이 '인덱스'에 존재해야 한다.
예를 들어, 10개의 파일을 수정했지만 그 중에 7개만 저장소에 공개하고 싶을 때를 생각해 보자. 변경한 10개의 파일 중 7개를 선택하는 작업이 바로 '인덱스에 등록' 또는 '스테이징(stage)'이라 표현하는 작업 이다.
이렇게 인덱스란 공간(가상이지만!)이 중간에 있는 덕분에 작업 트리 안에 있는 커밋이 필요 없는 파일들을 커밋에 포함하지 않을 수 있고, 파일에서 내가 원하는 일부 변경 사항만 인덱스에 등록해 커밋할 수 있다.
1. 작업트리(=폴더, Work space) 안에 있는 파일을 수정함.
↓add
2. 인덱스(=저장소와 작업트리 사이의 가사으이 공간)에 변경사항 기록(=staging)
↓commit
3. 인덱스에 등록된 파일들을 커밋하여 저장소에 올림
git의 영역
- Working directory(tree) : 현재 작업하고 있는 공간. Git이 관리하고 있지만, 아직 추적(track==관리)하고 있지 않은 상태
- index : stage 혹은 staging area 라고 하며, 준비 공간을 뜻한다. Git이 track하고 있으며 버전으로 등록되기 전 상태.
- repository : 저장소를 의미. local repository와 remote repository가 있다.
'🗂️git' 카테고리의 다른 글
[Git] 자주쓰는 command (0) | 2020.11.29 |
---|---|
[Git / Git Hub] Git 용어 재 정리 (0) | 2020.06.23 |
[Git / Git Hub] Branch (0) | 2020.06.21 |
[Git / Git Hub] Git 혼자 하기 편 (0) | 2020.06.21 |
[Git / Git Hub] 탄생배경 및 간단한 소개 (0) | 2020.06.21 |