데브옵스(DevOps)/Git & Github

[Git / Github] 깃과 깃허브에 대한 정리 (버전 관리 시스템)

잇트루 2022. 8. 26. 21:58
반응형

버전 관리 시스템(VCS: Version Control System)

프로그래밍하면서 정상 작동하던 코드가 수정을 거치면서 안된다거나, 이전에 작성했던 코드를 확인하고 싶은 경우가 있다. 또한, 여러 사람들과 함께 작업을 할 때, 누가 어떻게 수정을 했는지 서로 수정한 코드가 어떻게 다른지, 여러 사람들이 동시에 작성한 코드를 어떻게 병합해야 하는지 등 관리하는 것이 상당히 까다롭다.

 

이러한 경우를 대비하여 이전에 작성한 내용을 보존하여 위의 문제점을 해결해 주는 시스템이 버전 관리 시스템이다. 버전 관리 시스템은 소프트웨어 개발 및 유지 보수 과정에서 발생하는 여러 문제들을 관리해주는 것이다.

 

버전 관리를 해야 하는 이유

  1. 파일이 변경될 때마다 변경 이력을 저장할 수 있다.
  2. 이전 버전으로 돌아갈 수 있다.
  3. 어떤 변경 사항이 발생했는지 알아보기 쉽다.
  4. 여러 사람이 동시에 사용할 때 쉽게 관리할 수 있다.
  5. 현재 프로젝트에 문제가 생길 경우 백업이 가능하다.

 

Git이란?

Git이란 개발자의 코드를 효율적으로 관리하기 위해 개발된 분산형 버전 관리 시스템이다. 즉, 파일을 관리해주는 프로그램이다. 날짜별로 어떤 파일이 어떻게 바뀌었는지 확인하기 쉽고, commit 기능을 통해 스냅샷을 생성하고 이전 기록들에 대한 추적을 할 수 있다.

Git을 관리되는 파일은 Github, GitLab, Bitbucket 등 여러 가지 원격 저장소를 이용하여 버전 관리 또는 백업, 협업을 할 수 있다.

스냅샷 : 특정 시점에 생성된 백업용 복사본

 

Git의 기능

버전 관리

예를 들어, 작성해야 하는 문서가 100개 혹은 1000개 이상이며, 각 문서별로 10~20개의 버전이 존재한다면, 어떻게 할 것인가?

각 문서에 어떤 내용이 수정되었는지, 어떤 내용을 담고 있는지 기억하기 어려울 것이다. Git은 이러한 문제를 해결할 수 있다.

Git이 관리하는 폴더에 문서를 만들면, 해당 문서의 버전을 관리할 수 있다. 이후 수정할 때마다 언제 어떻게 수정이 되었는지 알 수 있으며, 이전 버전으로 돌아가야 할 때 Git이 기록한 내용을 확인하여 돌아가고자 하는 이전 버전을 선택할 수 있다.

 

백업

Git은 작업물을 원격 저장소에 백업하여 본인이 사용하는 컴퓨터가 고장 나거나, 다른 컴퓨터를 새로 이용해야 할 때 다시 가져올 수 있도록 한다.

 

협업

Git은 여러 사람들이 하나의 작업물을 가지고 작업할 때, 작업물을 공유하고 병합할 수 있게 도와준다. 각 한 사람씩 작업물을 원격 저장소에 저장하고, 저장된 원격 저장소 내용을 불러온 뒤, 각자가 작업한 내용과 이전 사람의 작업물을 병합하여 다시 원격 저장소에 올리는 것으로 여러 사람이 하나의 작업물을 작업한 것을 저장할 수 있다.

 

Git과 Github

Git은 소스 코드를 기록하여 관리하고 추적할 수 있는 버전 관리 시스템이다. 쉽게 말해 Git 자체는 로컬에서 버전을 관리해 주는 프로그램이다. 위에서 말한 백업과 협업을 하기 위해서는 원격 저장소 기능을 제공해주는 서비스가 필요하다. 이러한 기능을 하는 것이 Github이다.

 

Github는 Git Repository를 관리할 수 있는 클라우드 기반 저장소 서비스이다. 즉, Git으로 버전으로 관리하는 폴더를 Github를 통해 여러 사람들에게 공유할 수 있으며 다른 사람들이 올린 폴더에 접근할 수 있다.

따라서 Github에서 코드 리뷰 등을 통해 협업이 가능하고, 수많은 오픈 소스 프로젝트들이 Github로부터 호스팅 되고 있어 개발자들의 SNS이기도 하다.

 

오픈 소스(Open Source)

오픈 소스는 소스 코드가 공개된 소프트웨어를 뜻한다. 깃허브는 오픈 소스 저장소로 오픈 소스 프로젝트를 누구나 자유롭게 기능 추가 및 개선이 가능하다. 기여자(Contributors)라는 항목을 제공하여 해당 오픈 소스 프로젝트에 대하여 기여한 사람을 나타내 주기도 한다.

 

깃 리포지토리(Git Repository)

말 그대로 깃으로 관리되는 저장소를 뜻한다. git을 사용하여 내가 작업한 소스 코드 폴더를 관리하기 위해서는 Git Repository를 생성하여 관리해야 한다.

Git Repository는 원격 저장소(Remote Repository)와 로컬 저장소(Local Repository)가 존재한다.

로컬 저장소는 내 컴퓨터로 작업한 프로젝트가 내 컴퓨터에 저장되어 버전 관리를 받는 저장소이고, 내가 작업한 코드를 공유하기 위해 깃허브에 업로드하는 것은 원격 저장소이다.

다른 사람이 원격 저장소에 저장한 소스 코드를 내 로컬 저장소로 가지고 올 수도 있으며, 내가 원격 저장소에 저장한 소스 코드를 다른 사람이 가져갈 수도 있다.

반응형