2020. 11. 30. 17:36ㆍ깃
Git 이란?
Git 핵심을 아는 것은 중요하다. 왜냐하면 Git이 무엇이고 어떻게 동작하는지 이해한다면, 쉽고 효율적으로 Git을 사용할 수 있기 때문이다. Git은 다른 버전 관리 시스템(Version Control System)[이전 포스팅]과 미묘하게 개념적으로 다르다. 전체적인 인터페이스는 비슷하지만, 정보를 취급하는 방식이 다르다.
큰 틀에서 봤을 때, 버전 관리 시스템(Version Control System) 대부분은 관리하는 정보가 파일들의 목록이다. 각 파일의 변화를 시간 순으로 관리한다. 이러한 관리 방법을 델타 기반 버전관리 시스템이라고 한다.
[그림 1]을 보자. 기획_최종.txt, 기획_최종_최종.txt라는 두 파일이 있다. 파일 이름을 통해 어느 것이 먼저 작성되었는지 유추가 가능하다. 기획_최종_최종.txt는 기획_최종.txt의 내용을 "철수는 결국 기획을 못했다"라는 내용으로 업데이트 함과 동시에 다른 이름으로 저장했다. 결국 기획_최종.txt와 기획_최종_최종.txt 파일은 시간, 이름, 결과 모든 것이 서로 다른 독립적인 파일이다.
하지만 Git은 이런 식으로 데이터를 저장하지도 않고 취급하지도 않는다. Git은 파일 자체가 아니라 사진처럼 파일이 존재하는 순간을 중요하게 여긴다. 또한 파일 데이터가 달라지지 않으면, Git은 성능을 위해 파일을 새로 저장하지 않고 파일에 대한 링크만 저장한다.
[그림 2]를 이용하여 깃이 버전을 어떻게 관리하는지 간략하게 설명해보려고 한다. Version 1은 "철수는"이라는 내용을 담고 있다. Version 1의 내용을 담고 있는 파일 이름을 기획_초본.txt라고 가정해보자. 그리고 기획자는 만약 철수라는 사람이 오늘 안에 기획을 완료했다면 "철수는 기획을 했다"라는 내용을 추가할 것이고, 오늘 안에 기획을 완료하지 못했다면 "결국 기획(오타)를 하지 못했다"라는 내용을 추가하려고 한다. 따라서 Version 2는 두 개가 된다. 기획_결과1.txt는 "철수는 기획을 했다"는 내용을 담고 있고, 기획_결과2.txt는 "철수는 결국 기획을 못했다"는 내용을 담고 있다. 따라서 철수가 오늘 어떤 결과를 냈냐에 따라 내용을 선택해서 합칠 수 있다. 그리고 기획_최종.txt라는 파일을 만듦으로써 최종 결과물을 이 파일에 저장해 담으면 된다.
Github
Version 3로 저장되기 까지의 Version 1, Version 2에 대한 히스토리를 Git은 커밋 단위로 저장한다. 커밋 단위로 어떻게 저장되는지는 이번포스팅에서는 언급하지 않겠다. 깃은 로컬에 깔려있는 프로그램이자 클라이언트다. 깃이 실행되는 폴더 안에는 .git이라는 폴더가 숨김폴더 형식으로 저장되어 있다. .git 폴더를 생성하는 방법은 github나 aws codecommit과 같은 원격 서버를 이용하는 저장소를 로컬로 clone하거나 git init명령어를 터미널에 입력하면 된다. .git에는 commit 단위의 히스토리가 저장되어 있다. 이를 안전하게 보관하기 위해서는 원격 저장소에 업로드 및 저장하여 연결할 필요가 있다. 이러한 원격 저장소는 자체 서버를 빌려 운영하고 있고, Github가 대표적인 원격 저장소다. 즉, Github는 Git 프로젝트를 저장하고 업로드하는 원격 저장소인 셈이다.
참고 자료
'깃' 카테고리의 다른 글
[GIT] 버전 관리(Version Control) (0) | 2020.11.29 |
---|