본문 바로가기
프로그래밍 놀이터/Tips

[도서 정리] 1. 시작하기 - ProGit

by 돼지왕 왕돼지 2020. 1. 4.
반응형

1. 시작하기 - ProGit



1.1. 버전 관리란?


* 로컬 버전 관리


-

로컬 VCS (Version Control System) 으로 RCS(Revision Control System)이 많이 쓰인다.

RCS 는 기본적으로 Patch Set(파일에서 변경되는 부분)을 관리한다.




* 중앙집중식 버전 관리 (CVCS)


-

마지막 스냅샷만을 checkout 한다.

그래서 중앙 서버에 문제가 생기면 프로젝트의 모든 히스토리를 잃을 수 있다.




* 분산 버전 관리 시스템(DVCS)


-

Git, Mercurial, Bazaar, Darcs 등이 있다.

DVCS 에서의 클라이언트는 단순히 파일의 마지막 스냅샷을 checkout 하지 않는다.

그냥 저장소를 전부 복제한다.

서버에 문제가 생기면 이 복제물로 다시 작업을 할 수 있고, 클라이언트 중에서 아무거나 골라도 서버를 복원할 수 있다.





1.2. 짧게 보는 Git 의 역사


-

Linux 커널 개발시 2002년에 BitKeeper 라는 상용 DVCS 를 사용했다.

2005년에 커뮤니티가 만드는 리눅스 커널과 이익을 추구하는 회사가 개발한 BitKeeper 간의 관계가 틀어졌다. BitKeeper 를 더 이상 무료로 사용할 수 없게 되었다.

그래서 Git 을 만들기 시작했다.





1.3. Git 기초


* 차이가 아니라 스냅샷




* 거의 모든 명령을 로컬에서 실행


-

프로젝트의 모든 히스토리가 로컬 디스크에 있기 때문에 모든 명령을 순식간에 실행한다.

예를 들어 Git 은 프로젝트의 히스토리를 조회할 때 서버 없이 조회한다.

그냥 로컬 DB 에서 히스토리를 읽어서 보여 준다.




* Git 의 무결성


-

Git 은 데이터를 저장하기 전에 항상 체크섬을 구하고 그 체크섬으로 데이터를 관리한다.

그래서 체크섬 없이는 어떠한 파일이나 디렉터리도 변경할 수 없다.

체크섬은 Git 에서 사용하는 가장 기본적인(atomic) 데이터 단위이자 Git 의 기본 철학이다.



-

Git 은 SHA-1 해시를 사용하여 체크섬을 만든다.

만든 체크섬은 40자 길이의 16진수 문자열이다.

파일의 내용이나 디렉터리 구조를 이용하여 체크섬을 구한다.

그리고 Git 은 모든 것을 해시로 식별하기 때문에 이 해시값은 이곳저곳서 보인다.

실제로 Git 은 파일을 이름으로 저장하지 않고 해당 파일의 해시로 저장한다.




* Git 은 데이터를 추가할 뿐




* 세 가지 상태


-

Git 은 파일을 Committed, Modified, Staged 이렇게 세가지 상태로 관리한다.

Committed 란 데이터가 로컬 DB 에 안전하게 저장됐다는 것을 의미한다.

Modified 는 수정한 파일을 아직 로컬 DB 에 커밋하지 않은 것을 말한다.

Staged 란 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미한다.



-

Git 디렉터리는 Git 이 프로젝트의 메타데이터와 객체 DB 를 저장하는 곳을 말한다.

이 Git 디렉터리가 Git 의 핵심이다.



-

워킹 디렉터리는 프로젝트의 특정 버전을 checkout 한 것이다.

Git 디렉터리는 지금 작업하는 디스크에 있고 그 디렉터리 안에 압축된 DB 에서 파일을 가져와서 워킹 디렉터리를 만든다.





1.4. CLI





1.5. Git 설치





1.6. Git 최초 설정


-

git config 라는 도구로 설정 내용을 확인하고 변경할 수 있다.


설정 파일은 세 가지가 있다.

1. /etc/gitconfig : 시스템의 모든 사용자와 모든 저장소에 적용되는 설정이다. git config --system 옵션으로 읽고 쓴다.

2. ~/.gitconfig, ~/.config/git/config : 특정 사용자에게 적용되는 설정. git config —global 옵션으로 읽고 쓴다.

3. .git/config : Git 디렉터리에 있고 특정 저장소에만 적용된다.


돼왕 : 위의 path 는 folder 가 아니라 파일이다.


각 설정은역순으로 우선시된다. 

.git/config 가 /etc/gitconfig 보다 우선시된다.




* 사용자 정보


-

$ git config —global user.name “UserName”

$ git config —global user.email “emailAddress”


돼왕 : 이 사용자 정보는 commit 할 떄마다 사용된다.




* 편집기


-

기본적으로 Git 은 시스템의 기본 편집기를 사용하고 보통 Vi 나 Vim 이다.

Emacs 와 같은 다른 텍스트 편집기를 사용할 수 있고, 아래와 같이 실행하면 된다.


$ git config —global core.editor emacs




* 설정 확인


-

git config —list 명령을 실행하면 설정한 모든 것을 보여준다.



-

Git 은 같은 키를 여러 파일 (/etc/gitconfig, ~/.gitconfig 같은)에서 읽기 떄문에 같은 키가 여러 개 있을 수도 있다.

그러면 Git 은 나중 값을 사용한다.



-

아래와 같은 특정 key 값만도 확인할 수 있다.

$git config user.name 





1.7. 도움말 보기


-

syntax 는 아래와 같다.


$ git help <verb>

$ git <verb> —help

$ man git <verb>


사용 예는...

$ git help config





1.8. 요약




반응형

댓글