티스토리 뷰

Git

Git이란 무엇인가?

토마's 2018. 1. 27. 12:01

안녕하세요. 오늘은 Git이 무엇인지에 관한 포스팅을 해보려고 합니다. 대학교 때 조를 만들어서 프로젝트를 진행해 본 적이 있습니다. 만약 개인 프로젝트나 2명이 프로젝트를 진행하는 경우에는 메신저나 이메일을 통해서 최신 소스코드를 주고 받으면서 개발을 진행하는데 문제가 없지만, 프로젝트의 규모가 커지면, 소스코드의 최신판을 관리하기란 매우 어렵습니다. 또한 프로젝트가 끝나더라도 계속적인 유지보수를 할 필요성이 있기에 최신판의 소스코드를 관리하는 것은 필수입니다. 


이러한 소프트웨어를 중심으로 하는 프로젝트에 빈번하게 발생하는 문제를 해결하기 위해 등장한 도구가 바로 형상관리도구(configuration Management Tool) 또는 버전관리도구라고 부르기도 합니다.

오늘날 많이 사용되고 있는 형상관리 도구의 두 축이 있는데 하나는 SVN 또 다른 하나는 GIT입니다. 한 때, SVN이 많이 사용되었는데, 근래에 들어 GIT이 등장하고 나서부터는 SVN을 사용하던 많은 기업들이 GIT으로 갈아타고 있는 추세입니다.


오늘은 GIT에 대해서 알아볼 것이며, 차후에 SVN에 대해서도 포스팅 하도록 하겠습니다.


Git 이미지




1. Git의 간단한 설명


리누스 토발즈가 리툭스 커널 프로젝트를 위한 버전 관리 시스템으로 개발하였으며, 기존 리눅스 커널 관리를 위해 BitKeeper라는 툴을 쓰다가 유료로 전환되는 바람에 만든 분산형 버전 관리 시스템입니다. git의 특징으로는 매우 빠른 속도와 분산형 저장소를 지원하고, Git의 작업 폴더에는 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하고 있습니다. 또한 책임성을 유지하기 위해서 커밋한 사용자의 이름과 이메일 주소가 반드시 필요합니다. 



2. Git을 사용하면 가능한 것들


- 소스코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업한느 등 병렬 개발이 가능해지며, 버전 관리자 용이해져 생산성이 증가가합니다.

- 소스코드의 수정 내용이 커밋 단위로 관리되고, 패치 형식으로 배포 될 수 있기 때문에 프로그램의 변동 과정을 체계적으로 관리할 수 있고, 언제든지 지난 시점의 소스코드로 점프(Checkout)할 수 있습니다.

- 새로운 기능을 추가하는 Experiment version을 개발하는 경우, 브랜치를 충분히 실험을 한 뒤, 본 프로그램에 합치는 방식(Merge)으로 개발을 진행할 수 있습니다.

- 분산 버전관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있으며, 중앙 저장소가 날라가버려도 다시 원상복구할 수 있습니다.

- 팀 프로젝트가 아닌, 개인 프로젝트일지라도 GIT을 통해 버전 관리를 하면 체계적인 개발이 가능해지고, 프로그램이나 패치를 배포하는 과정도 간단해집니다. (pull을 통한 업데이트, patch 파일 배포) 



3. GIT의 도표


(그림 출처 : http://pismute.github.io/whygitisbetter/)


위의 도표를 보시면 작업한 내용을 스테이징 영역에 올리고 로컬 저장소로 커밋하고, 이것을 푸시해서 원격 저장소로 보내는 것을 확인할 수 있습니다.


참조 블로그 : https://tuwlab.com/ece/22202


그럼 이상으로 Git에 대한 포스팅을 마치도록 하고, 다음에는 Git 설치 방법에 대해서 포스팅 하도록 하겠습니다 : )