본문 바로가기

사는 이야기/펌킨도서관

Git 사용 어렵지 않아요! 1편: Git을 사용하기 위한 준비

Git 이용한 버전 관리, 많이들 하시죠. 형상 관리를 위해 이처럼 널리 쓰인 도구가 있을까 싶을 정도로 유명하죠. 관련해 Git 이용한 버전 관리를 4회에 걸쳐 소개하겠습니다. 


글. 펌킨네트웍스 개발1팀 강유건 (yugun819@pumpkinnet.com) 


1. 버전 관리란 무엇인가? / Git 사용하기 위한 준비

2. commit 해보기

3. branch 대해 알아보자

4. 서버와 통신 해보기- github


버전 관리 없이 개발을 하는 것은 상상할 없는 일이죠. 사람이 하는 일인데 언제 어떤 실수로 작성하던 코드나 파일을 삭제할 위험이 따릅니다. 잠깐의 실수가 돌이킬 없는 결과로 이어지지 않게 하려면! 복구 대책이 필요합니다. 이런 이유로 버전 관리를 하는 것이죠. 참고로 형상 관리는 단순히 복구를 위해서만 쓰이는 것은 아닙니다. 혼자 하는 경우가 아닐 경우 여럿이 팀을 이루어 작업할 하나의 파일을 여려명이 작업할 각종 충돌 문제 해결에도 필요합니다. 


Git 대해 알아보기 전에 버전 관리의 개념을 간단히 살펴보겠습니다. 버전 관리의 중요성과 개념을 설명할 흔히 문서 작업을 예로 듭니다.  


2019년 새해를 맞아 유건이는 알고 있는 지식을 공유하기 위해서 블로그에 글을 쓰기로 결심했습니다. 며칠 동안 고민해서 초안.txt’ 문서를 만들었지만, 블로그에 올리기에는 부족한 것 같아 친구들에게 피드백을 받아봅니다. 친구 A는 본문 내용이 부실하다는 피드백을 주었습니다. 유건이는 본문을 보강하여 본문 보강.txt’를 만들었습니다. 친구 B는 친절하게도 읽는 이들이 이해하기 쉽게 그림이 있었으면 좋겠다는 생각이 들어 직접 그림을 그려서 그림 추가.txt’를 보내주었습니다. 마지막으로 유건이는 본문 보강.txt’와 친구 B가 보내준 그림 추가.txt’ 파일을 열어 각 파일에 변경된 부분을 비교하면서 최종본.txt’를 만들었습니다




이 사례는 일반적으로 볼 수 있는 공동 문서 작업입니다. 문서 작업을 할 때도 내용 변경 이력 관리를 하는 이들도 있지만, 대부분 위의 예처럼 일단 계속 합치는 과정을 거치게 되죠. , Git 같은 버전 관리 도구나 기능을 쓰지 않는 것인데요, 이런 경우 무엇이 잠재적으로 문제가 될 수 있는지 대략 다섯 가지로 요약해 볼 수 있습니다.  

첫 번째로 파일 변경 히스토리를 기록하려면 총 4개의 파일을 저장해야 하므로 중복으로 저장하는 내용이 생겨 저장 공간이 낭비됩니다두 번째로 변경 정보를 파일명으로 기록하게 되어서 파일명이 제 역할을 상실하게 되고, 변경한 내용이 많아지면 파일 이름이 지나치게 길어질 수 있습니다세 번째로 어떤 파일을 변경해서 만들었는지 파일 간의 관계를 파악하기 어렵습니다네 번째로 누가 어떤 부분을 어떻게 고쳤는지 확인하기 어렵습니다마지막으로 파일의 어떤 부분이 변경됐는지 확인하려면 일일이 대조 작업을 해야 합니다.

위 사례처럼 작업 파일의 크기가 작고 협업하는 사람의 수가 적으면 버전 관리 도구를 사용하지 않는 게 더 편할 수도 있습니다. 그러나, 소프트웨어의 경우 엄청나게 많은 파일을 수많은 사람들이 협업해서 만들기 때문에 버전 관리 도구 사용은 필수입니다 

가령 전 세계에서 가장 유명한 오픈 소스 중 하나인 리눅스 프로젝트의 경우 파일의 수는 약 6만 개이고, 프로젝트에 기여하는 컨트리뷰터(Contributor)가 너무 많아 무한대로 표시되는 것을 볼 수 있습니다.



기존 중앙집중식 버전 관리 시스템(Centralized VCS)에서는 서버와 연결되어 있지 않으면 소스 코드를 받아오거나 올릴 수 없고, 천재지변으로 리파지토리(repository)가 날아가는 경우 복구가 불가능해지는 등의 문제가 있었습니다. 반면에 Git은 분산 버전 관리 시스템(Distributed VCS)으로 프로젝트가 복제(clone)되어 로컬 컴퓨터들이 모두 리파지토리가 되기 때문에 서버와 연결없이 대부분의 명령어를 로컬에서 처리할 수 있고, 서버의 리파지토리도 로컬에 복사해 복원할 수 있다.

이제 본격적으로 Git을 사용하기 위한 환경 설정을 해보겠습니다. 참고로 본 내용은 CentOS 7 버전을 기준으로 작성했습니다.


1)  Package tool을 사용하여 Git을 설치합니다. 


$ sudo yum install git


2) 새로운 git repository를 만들거나


$ cd /path/to/project

$ git init



이미 만들어진 리파지토리를 받아옵니다.


$ cd /path/to/clone

$ git clone https://github.com/torvalds/linux.git


3) commit에 남길 개인 정보와 Git에서 사용할 편집기를 설정합니다


$ git config --global user.name “Gil-dong Hong”

$ git config --global user.email gildong@example.com

$ git config --global core.editor vim


이 설정 정보는 ~/.gitconfig에 저장됩니다.

프로젝트별로 다른 계정 정보를 사용하고 싶다면 프로젝트 디렉터리에서 --global 대신 --local을 사용하면 되고, 프로젝트별 설정은 /path/to/project/.git/config에 저장됩니다.


4) root 계정에서 user와 같은 설정을 사용하려면 심볼릭 링크를 쓰면 됩니다.


# ln -s /home/user/.gitconfig /root/.gitconfig


이제 Git을 사용할 준비가 되었습니다. 다음 포스팅부터는 Git 명령어에 대해 알아보겠습니다.