Git, GitHub, GitLab 은 무엇인가

2023. 12. 12. 17:19DevOps/Git

산 버전 관리 시스템 (DVCS : Distributed Version Control System) 

: 분산 버전 관리 시스템은 소프트웨어 버전 관리를 위한 시스템으로 공식 저장소로 간주되는 중앙 저장소가 있고 개발자들이 이 저장소를 로컬에 복제(clone) 하여 사용한다. 각 개발자들이 자체적인 로컬 저장소를 갖고 있기 때문에 동시에 여러 명이 작업을 할 수 있어 협업에 효과적으로 사용된다. 

 

특징 

  • 자체적인 로컬 저장소에서 독립적으로 작업하고, 필요에 따라 중앙 저장소에 변경 사항을 반영하여 코드를 공유할 수 있다. 
  • 중앙 서버의 문제가 있어도 클라이언트 PC의 소스를 통한 원상 복구가 가능하다. 
  • 독립적인 브랜치를 이용하여 신규 기능 개발이나 버그 수정 작업을 안전하게 수행할 수 있다. 
  • 분산 버전 관리 시스템을 사용하는 소스 코드 저장소의 기여는 풀 리퀘스트(pull request), 즉 머지 리퀘스트(merge request)라는 방식을 통해 이루어지는 것이 보통이다. 
  • 인터넷이 연결되지 않은 곳에서도 작업이 가능하다. 

 


 

Git 

: Git 이란 버전 관리 시스템(형상 관리 도구라고도 불린다.) 중 하나로 프로젝트의 쉬운 버전 관리가 가능하다는 것이 특징이다. 과거의 특정 시점으로 코드를 되돌리고, 특정 변경 사항을 취소하고, 다른 버전의 소스 코드를 비교하는 것도 가능하다.
(git의 명령어에 대해서는 따로 글을 작성해 볼 예정이다. )

 

Git에서 필수로 알아야 할 개념

Repository (저장소)

: 코드의 집합체로 프로젝트의 모든 버전과 이력이 저장된다. 

 

3가지의 작업 영역

: git에서는 로컬, 스테이징, 원격 저장소 3가지의 작업 영역이 있다. 로컬과 스테이징 까지를 Working Directory라고 한다. 

    - Local Repository : 개인 PC(로컬)에 존재하는 저장소

    - Staging Area : 실제로 원격에 커밋할 파일을 올려두는 곳으로 git add 명령어를 이용하여 파일들을 추가한다. 

    - Remote Repostiry : 원격 저장소로 Staging Area에서 커밋된 내용들이 저장된다. 

 

Commit (커밋)

: 파일/폴더의 변경 사항들을 기록하는 행위로 프로젝트의 특점 시점 상태를 저장한다. 

 

Checkout (체크아웃)

: 코드 타임라인에서 새로운 커밋을 쌓을 수 있는 브랜치를 생성하는 행위이다. 

 

Branch (브랜치) 

: 독립적으로 작업할 수 있는 가상의 공간(가지라고도 불림)으로, 신규 기능 개발을 하거나 버그를 수정할 때 사용된다. 

 

Merge (머지)

: 두 개의 브랜치를 병합하는 작업이다. 동일한 파일에서 서로 다른 작업이 포착된다면 충돌이 발생하여 병합이 중지되는데 충돌이 발생한 코드에 대해서 코드를 수정하게 되면 머지가 계속 진행된다. 

 

Head (헤드)

: 체크 아웃된 현재 브랜치에서 제일 최근 커밋을 가리킨다. 

 


 

GitHub

: 깃허브(Github)는 분산 버전 관리 툴인 깃(Git)을 사용하는 프로젝트를 지원하는 웹호스팅 서비스로 협업 프로젝트를 효과적으로 진행하는데 도움을 준다. 

특징 

  • 깃허브의 프로젝트는 표준 Git 명령줄 인터페이스를 사용하여 접근하고 조작할 수 있으며 모든 표준 Git 명령어들이 이 인터페이스와 함께 동작한다. 
  • 등록 사용자와 비등록 사용자 모두에게 사이트의 공개 저장소를 찾아볼 수 있는 권한을 제공한다. 
  • 깃이 텍스트 명령어 입력 방식인데 반해, 깃허브는 그래픽 유저 인터페이스(GUI)를 제공한다.
  • 비영리적인 오픈 소스 프로젝트는 무료로 호스팅 되며, 비공개 프로젝트는 유료로 제공한다. 

 


 

GitLab

: 깃랩(GitLab)은  저장소 및 CI/CD, 이슈 추적, 보안성 테스트 등의 기능을 갖춘 웹 기반의 데브옵스 플랫폼으로써, 오픈 소스 라이선스 및 사유 소프트웨어 라이선스를 사용한다. 

 

특징

  • GitHub과 유사하지만, 온프레미스 버전도 제공하여 기업 내에서 보안 및 커스터마이징이 필요한 경우 사용된다. 
  • 이슈 트래킹 시스템을 내장하고 있어 버그 리포팅, 작업 항목 추적, 기능 개발 등을 효율적으로 할 수 있다.
  • CI/CD 파이프라인을 내장하고 있어 자동으로 빌드, 테스트, 배포를 수행할 수 있다.
  • 플러그인 시스템을 통해 다양한 확장이 가능하다. 
  • 공개 및 비공개 프로젝트 모두 무료로 호스팅이 가능하다.
  • 기업용으로 설계되었다. 

 


 

GitHub와 GitLab의 차이점

GitHub은 주로 오픈 소스 및 개인 프로젝트에, GitLab은 통합된 모든 개발 라이프사이클이 필요한 기업 프로젝트에 추천한다. 

또한 개발 팀의 우선순위, 프로젝트 요구 사항, 비용 등도 같이 고려하면 좋을 것 같다. 

  GitHub GitLab
소유주 Microsoft GitLab Inc.
금액 비공개 프로젝트는 유료로 제공 공개/비공개 모두 무료 
보안 GitHub Advanced Security를 통해 고급 보안 기능을 제공 장된 보안 및 CI/CD 도구를 통합하여 포괄적인 보안 솔루션을 제공
온프레미스 옵션 GitHub Enterprise(유료) GitLab Community Edition(무료) 및 Enterprise Edition(유료)
기능 및 통합 강조된 오픈 소스 및 풍부한 통합 기능 CI/CD, 이슈 트래킹, 코드 품질 관리 등 통합된 모든 개발 라이프사이클

 

 

 

 

 

 

 

 

인용 및 참조