반응형
Git이란?
- [깃]이라고 발음된다.
- 소프트웨어 버전관리 시스템.
- 원래는 Linux 소스코드를 관리할 목적으로 개발, 2005년 탄생.
Git은 DVCS (Distributed version control system, 분산 버전 관리 시스템)이다.
- 반대는 CVCS (Centralized VCS, 중앙집중식 버전 관리) ex) Subversion
Git은 변화가 아니라 Snapshot을 저장한다.
- Snapshot(스냅샷)이란?
- 단어를 번역하면 움직이는 물체를 재빨리 찍는 사진. 카메라로 그 순간을 남기듯이 그 당시의 모습을 기억한다는 의미.
- Git은 데이터를 파일 시스템 스냅샷(그 당시의 파일 시스템 자체)로 취급하고 크기가 아주 작다.
- 기존 CVCS는 변화와 파일목록을 저장.
Git은 성능을 위해서 파일을 새로 저장하지 않는다. 단지 이전 상태의 파일에 대한 링크만 저장.
Git은 거의 모든 명령을 Local에서 실행한다.
- Local(로컬)이란?
- 원격(Remote)의 반대. 쉽게 말하면 내가 쓰는 컴퓨터.
- 한국어로는 Local의 개념이 영어처럼 자주 쓰이지 않는데 구지 번역하면 지역적.. 쉽게 버스로 말하면 시외 버스(빨간 버스)와 달리 우리 동네만 다니는 지선 버스(초록버스)가 Local 버스이다. 우리 지역을 cover한다는 개념.
- 네트워크 연결 없어 빠르다.
- 프로젝트의 모든 히스토리가 로컬 디스크(내 컴퓨터 안에)에 있기 때문에 모든 명령이 순식간에 실행
- 비행기나 기차 등에서 작업하고 네트워크에 접속하고 있지 않아도 Commit할 수 있다.
Git의 무결성(데이터에 흠이 없음)
- Git은 데이터를 저장하기 전에 항상 Checksum을 구하고 그 Checksum으로 데이터를 관리 (체크섬이 맞지 않으면 파일이 손상된 것.)
- SHA-1 Hash(해쉬) 사용. 40자 길이의 16진수 문자열.
- 파일의 내용이나 디렉토리 구조를 이용하여 Checksum을 구한다.
- 관리시 파일이름으로 저장하지 않고 해당 파일의 Hash로 저장
Git은 데이터를 추가할 뿐
- 되돌리거나 데이터를 삭제할 방법이 없다. (Git 자체에서는 지우지 않지만, 유저가 변경사항을 전부 커밋하지 않고 리셋하든지 하면 변경사항이 날아가 다시 살릴 수 없으므로 주의하자.)
- 커밋하고 나면 데이터를 잃어버리기 어렵다.
세 가지 상태 States
- Committed 데이터가 (버전 관리용) 로컬 데이터베이스에 안전하게 저장됨
- Commit(커밋)이란?
- 영어로 '공개적으로 의사를 밝히다'라는 뜻이다. 내가 작성한 파일을 공식적으로 외부에 공개할 목적으로 저장한다는 개념. Committed는 공식적으로 외부에 공개할 목적으로 저장되었다는 의미.
- Commit(커밋)이란?
- Modified 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않음
- Staged 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태
Git directory (.git)
- Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳
- 다른 컴퓨터에 있는 저장소를 Clone(복제) 할 때 Git 디렉토리가 만들어진다.
Working Tree 작업 트리
- Local folders 내가 작업하고 있는 폴더와 파일들
- 프로젝트의 특정 버전을 Checkout 한 것
- Checkout(체크아웃)이란?
- Git에서 체크아웃이란 파일, 커밋, 브랜치 등의 여러 버전들 간에 전환하는 행동을 의미한다.
- 본래 영어에서 check out은 머물던 호텔/병원에서 방을 비우고 비용을 결제하고 나간다던지 상점에서 장바구니에 물건을 담고 계산하고 나간다던지 하는 것을 의미하는데 현재 하던 작업을 정리하고 나간다는 의미로 Git에서 사용한듯 하다.
Index or Staging Area
- Index의 의미: 색인. 내 파일들 중에서 commit할 파일들을 골라 표시한 것이라는 의미이다.
- Staging Area의 의미: 무대. 내 파일들 중에서 commit할 파일들을 골라 무대에 올린다(Stage)는 의미이다.
- 저장소와 작업 트리 사이에 존재하는 공간
- Git 디렉토리에 있다. 곧 커밋할 파일에 대한 정보를 저장.
Git의 기본 작업
- Working Tree에서 파일을 수정
- 파일을 Stage 해서 Staging Area에 Commit할 스냅샷을 만든다.
- Staging Area에 있는 파일들을 Commit해서 Git 디렉토리에 영구적인 스냅샷으로 저장한다.
Git 최초 설정
- 환경 설정은 한 컴퓨터에서 한 번만 하면 된다. 업그레이드해도 유지.
- 사용자이름과 이메일 주소를 설정
- git config --global user.name "John Doe"
git config --global user.email johndoe@example.com - 만약 프로젝트마다 다른 이름과 이메일 주소를 사용하고 싶으면 --global 옵션을 빼고 명령을 실행
- git config --global user.name "John Doe"
- 텍스트 편집기 설정
- git config --global core.editor emacs
- Vim과 Emacs, Notepad++은 꽤 인기 있는 편집기
- git config --list 설정한 모든 것 확인
- git config <key> 특정 Key에 대해 어떤 값을 사용하는지 확인
도움말 보기
- git help <verb>
- git <verb> --help
- man git-<verb>
- 그래도 모르면 Freenode IRC 서버(irc.freenode.net)에 있는 #git 이나 #github 채널에 물어볼 것
반응형
'개발 이야기 > Git' 카테고리의 다른 글
Git 요약 5. Tag(태그), Alias(가명) 사용하기 (0) | 2018.09.05 |
---|---|
Git 요약 4. 리모트 저장소(Remote Repository) (0) | 2018.09.05 |
Git 요약 3. 커밋 히스토리 조회하기, 되돌리기(Undo) (2) | 2018.09.05 |
Git 공부하는데 도움이 되는 책, 사이트 추천 (0) | 2018.09.04 |
Git 요약 2. Git 저장소(Repository) 만들기, 수정하고 저장소에 저장하기 (0) | 2018.09.03 |