본문 바로가기

기타

Git

DVC를 본격적으로 사용해보려 했는데, 

github에는 자동으로 안올라가나..? 시각적으로 (gui)로 볼 수 없나...? 와 같은 생각이 들었다...

Git과 github는 엄연히 다른데, 바보 같은 생각이었다.

 

DVC를 잘 다루기 위해서는 git의 사용 능력이 필수적이라는 생각이 들어,

이번 기회에 Git관련 내용들을 정리해보고자 한다. 

 

 

먼저, 필자는 평소에도 "공식" 문서를 믿고, 애용하며,

이 글 또한 Git 공식 홈페이지의 내용을 기반으로 작성되었음을 알린다.

 

 

Git이란?

버전 관리를 위한 도구들(Version Control System)이 

local VCS -> CVCS(중앙 집중형 버전 제어 시스템) -> DVCS 로 점차 진화해왔으며,

Git이란, DVCS(분산 버전 제어 시스템)의 한 종류이다.

 

분산 버전 제어 다이어그램

모든 개발자가 자신의 로컬환경에 전체 리포지토리의 히스토리(복제본)을 보유한다!

원격 저장소란 GitHub, GitLab과 같은 Git 서비스를 제공하는 회사의 서버에 호스팅된 저장소를 말하는데,

밑에서 다시 한번 소개하도록 하겠다.

Git에서는 원격 저장소의 데이터 == 로컬 저장소의 데이터 이다. (변경하지 않았다면)

 

! 원격 저장소에 대용량의 데이터를 두고, 메타데이터를 Git을 통해 관리할 수 있도록 해주는게 dvc !

DVC는 git과 함께 쓰며, DVC의 원격저장소(실제 데이터), git의 원격저장소(.dvc파일)이 존재함을 구분하자.

 

벌써 dvc를 사용하며 조금은 답답했던 부분들이 해소된 기분이다.

이제  dvc는 잠시 잊고, git에 대해 더 알아보자!

 

 

Git의 목표 및 핵심

Git의 목표는 아래의 다섯가지이다. 

  • 빠른 속도
  • 단순한 구조
  • 비선형적인 개발(수천 개의 동시 다발적인 브랜치)
  • 완벽한 분산
  • Linux 커널 같은 대형 프로젝트에도 유용할 것(속도나 데이터 크기 면에서)

Git이 이 목표들을 이루기 위해 어떠한 방식으로 동작하는지 알아보자.

 

Git은 아래 사진과 같이 

파일에 변경 사항이 없다면, 새로 저장하지 않고 이전 상태의 파일에 대한 링크만 저장한다.

시간순으로 프로젝트의 스냅샷을 저장

 

또한 거의 모든 명령은 로컬에서 실행가능하며, 데이터 저장 전 checksum을 통한 무결성을 보장한다.

추가로 Git은 아래와 같은 3가지 상태로 파일을 관리한다.

git에서 파일의 3가지 상태

  • Committed란 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미한다.
  • Modified는 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말한다.
  • Staged란 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미한다.

Git으로 당신이 무얼 하든, Git 데이터베이스에는 데이터가 추가 될 뿐이다.

(데이터를 삭제하여도, 그 사실을 커밋하는 행위이기에)

일단 커밋하였다면, 데이터를 잃어버리기 어렵다!

 

 

이렇게 Git의 목표와 이를 위한 핵심 동작방식을 알아보았다. 

아까 위에서 언급했던 GitHub와 GitLab에 대한 간단한 소개 후 이번 글을 마치도록 하겠다.

GitHub와 GitLab

Github는 규모가 가장 큰 git 저장소 host이며,

공식 문서에서는 "다른 사람과 함께 코드를 작성하고 저장하며 공유할 수 있는 클라우드 기반 플랫폼" 이라고 한다.

많은 개발자들이 이슈 트래킹, 코드 리뷰, 협업(PR), 프로젝트 관리등을 수행하고 있다.

github desktop과 같은 도구를 통해 gui 방식으로 사용할 수도 있다. 

 

GitLab도 동일하게 "Open source software to collaborate on code" 라고 소개되어진다.

쉽게 차이점을 말하자면, 기업용으로 설계되었다는 점을 말할 수 있다. 

DevSecOps 플랫폼으로서, 단순히 개인의 코드를 올리기보단, 프로젝트의 운영에 이점이 있다.

 

참조 : https://radixweb.com/blog/github-vs-gitlab

 

 

다음글에서는 본격적으로 CLI환경에서 Git을 어떻게 사용하는지에 대해 이야기해보자.


 

Git - Book

 

git-scm.com

 

 

GitHub 및 Git 정보 - GitHub Docs

GitHub 및 Git을 사용하여 협업할 수 있습니다.

docs.github.com

 

 

Files · master · GitLab.org / GitLab FOSS · GitLab

GitLab FOSS is a read-only mirror of GitLab, with all proprietary code removed. This project was previously used to host GitLab Community Edition, but all development has now...

gitlab.com