반응형

버전관리

웹 페이지를 개발 한다고 가정하겠습니다. 소프트웨어를 만드는 과정에서나 운영하는 과정에서 새로운 기능을 추가하거나 제거하기도 하고 수정하기도 합니다. 이러한 과정에서 이전 기능을 다시 추가하거나 실수로 인해 복원해야 하는 경우도 발생합니다. 또한 개발 과정에서 어떻게 수정되었는지 히스토리를 확인해야 하는 경우도 있습니다. 그래서 프로그램 수정 전에 중간중간 백업이 필요했습니다.

개발자는 이러한 상황에 대비하여 각 버전별로 압축하고 설명을 작성하여 보관을 했어야 했죠. 이런 백업파일이 축척되다보면 번거롭기도하고 용량도 많이 차지하게 됩니다.

협업

그리고 작은 규모의 프로젝트인 경우는 혼자 개발하여 반영하면 되지만 큰 규모의 프로젝트인 경우는 다양한 개발자와 협업하여 개발해야 합니다. 이런 경우 모든 개발자들이 테스트하며 개발하기 위해 자신의 Local 에 복사하여 진행하게 됩니다. 각자 자신의 영역을 개발하다보면 수정된 내용을 메일로 공유하는 것도 어렵고 클라우드를 통해 공유하는 것도 복잡하니다. 또한 오류가 발생하면 누가 언제, 어떻게 수정했는지 파악하기도 어렵습니다. 거기다 위에서 언급한 버전별 백업까지 해야한다면 보통 어려운 일이 아닙니다.

그래서 Git 과 같은 버전관리 Tool 이 나오게 되었습니다.

Git

Git이란? 형상 관리 도구 또는 버전 관리 시스템이라고도 합니다. Git은 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료, 공개소프트웨어 입니다.  소스코드를 여러 개발 PC와 저장소에 분산해서 저장 할 수 있기때문에 중앙 서버에 장애가 발생해도 로컬 저장소에 커밋을 할 수 있으며, 로컬 저장소들을 이용하여 중앙 저장소의 복원도 가능합니다.

또한 소스코드를 주고 받을 필요 없이, 동일한 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능 합니다.

개발을 시작하는 폴더에서 아래와 같이 git 초기화 명령어로 시작하면 모든 수정내용이 저장되는 .git 폴더가 생성됩니다.

D:\PycharmProjects\ReST-Studio > git init

Github

버전 관리 시스템을 지원하는 웹호스팅 서비스 입니다. Git으로 저장된 파일들을 원격 전송하여 저장 관리 할 수 있도록 공간을 제공하는 서비스입니다. 간단히 Git은 영상을 만드는 App이고 Github는 YouTube 라고 생각하시면 됩니다. (Github 바로가기

유사한 서비스로 Gitlab, bitbucket 등이 있지만 일반적으로 가장 많이 사용되는것이 Github 입니다.

Github에 올린 소스 코드는 Private로 설정하지 않는 이상, 모든 사람들이 볼 수 있고 다운 받을 수가 있는데요. 이렇기 때문에 Github는 단순히 내 코드를 원격으로 백업해두는 공간의 개념을 넘어서 전 세계의 무수한 오픈소스 프로젝트들이 공유되고 자발적으로 참여하는 수많은 개발자들에 의해서 발전하는 곳이 되었습니다. 


관련 용어들

  • Repository : 저장소를 의미하며, 저장소는 히스토리, 태그, 소스의 가지치기 혹은 branch에 따라 버전을 저장 (저장소를 통해 작업자가 변경한 모든 히스토리를 확인 할 수 있습니다.)
  • Working Tree : 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점
  • Staging Area : 저장소에 commit 하기 전에 준비하는 위치
  • Commit : 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업
  • Head : 현재 작업중인 Branch
  • Branch : 가지 또는 분기점을 의미하며, 작업을 할때에 현재 상태를 복사하여 Branch에서 작업을 한 후에 완전하다 싶을때 Merge하여 작업
  • Merge : 다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업을 의미

>> [ Git, Github ] 설정하기 (초보)

>> [ Git, Github ] 기본 사용법

 

반응형