본문 바로가기
웹 & 앱 개발

[Git] Git : 분산 버전 관리 시스템 (DVCS) - GitHub, GitLab, Bitbucket

by newstellar 2021. 10. 15.
반응형
 

[GitHub] 깃허브 잔디 심는 법 - GitHub Contributions

깃허브를 하다 보면 어떤 날은 특별한걸 하지도 않은 것 같은데 contribution 수가 많고(진한 초록색) 또 어떤 날은 깃허브를 붙잡고 몇 시간을 썼는데도 contribution이 없거나 연한 초록색으로 남아

newstellar.tistory.com

 

 

[GitHub/Django] GitHub CI에 Django Test 및 Redis 적용하기

[Django] GitHub CI에 Django Test 및 Redis 적용하기 1. GitHub CI란? 우선 CI란 Continuous Integration의 준말로 테스트, 웹 크롤링 등 로컬에서 직접 수행하던 작업을 자동화하여 충돌 문제를 미연에 방지하는..

newstellar.tistory.com


 

안녕하세요, 오늘은 전세계 개발자라면 거의 99%가 사용하는 버전 관리 시스템을 알아보도록 하겠습니다.

 

예전에는 집중식 버전 관리 시스템(CVCS)의 대표격인 SVN(Subversion)을 많이 사용했다고 하는데, 지금은 익숙하지 않은 이름이 되어버렸습니다.

 

git 개념과 뗄레야 뗄 수 없는 플랫폼이 gitHub이기 때문에 gitHub과 관련된 기존 포스팅도 참고바랍니다.

 

 

1. 분산 버전 관리 시스템(DVCS)이란?

 

  • 분산 버전 관리 시스템(Distributed Version Controll System, DVCS)

    : 각 개발자가 중앙 서버에 접속하지 않은 상태에서도 코드 작업이 가능하며, 독립적인 결과물을 병합(또는 거절)할 수 있도록 버전을 관리해주는 시스템

 

 

 

- 중앙 저장소의 Version에 따라서 개발하는 SVN(Subversion)과 달리 Git은 개발자의 Commit history를 통해 버전 관리가 용이

 

- 개발 프로젝트의 local 저장소와 원격 저장소를 분리하여 독립적인 코드 관리가 가능

 

- 코드 결함 시 손쉽게 Commit history를 살펴 복원이 빠르며, 코드 리뷰를 비롯한 협업에 최적화된 시스템

 


2. Git의 핵심 개념

 

(1) Repository (저장소)

 

- Remote Repository (원격 저장소) : 원격 서버에 저장된 저장소로, 여러 사람이 함께

 

- Local Repository (개인 저장소) : 우리가 직접 관리하는 저장소로, 개발 Local PC에 저장

 

 

 

 

 

(2) Staging (임시 저장) / Commit (변경 이력)

 

- 변경사항들이 반영되기 전 해당 변경사항의 이력들이 저장되는 Index기록하는 행위를 Staging이라 한다.

 

- 개별 변경 사항인 Stage가 반영된 이력을 Commit이라 한다.

 

 

 

 

 

(3) Branch

 

- Branch특정 Commit으로부터 분기되는 포인터로, 개발자들이 개발을 진행하고 있는 환경 또는 흐름을 뜻한다.

 

- 새로운 Branch생성되더라도 기존의 Main Branch는 유지된다.

 

 

 

 

(4) Merge (병합)

 

- 분기된 Branch다시 하나의 Branch합치는 것으로, Merge 과정에서 Conflict많이 발생한다.

 

- 여러 Branch들을 한꺼번에 Merge때 차례차례 Main Branch로 병합한 상태에서 진행한다.

 

 


3. Git 기반 플랫폼

 

(1) GitHub

 

  • 2008년 개발된 최대 규모 오픈소스 DVCS (2018년 MS 인수)
  • Git, SVN, Mercurial(HG), TFS 지원
  • CI/CD (GitHub Actions)
  • Vue.js, Docker, Tensorflow, React 등 많은 라이브러리가 GitHub에서 배포/유지보수

 

(2) GitLab

  • 2013년 GitLab 사 개발

  • Git 지원

  • 개발 외 DevOps 환경 구축에 용이 (이슈 추적, 테스트, CI/CD 파이프라인)

  • 3rd party 플러그인/툴 없이 자체 CI/CD

  • Kubernetes 기반 배포 및 모니터링

  • GitHub에 비해 느린 push, pull

 

 

 

(3) Bitbucket

 

  • Atlassian이 개발/제공한 DVCS로서 Jira와의 연동성이 좋음

  • Jenkins, CircleCI CI/CD 도구 제공

  • 코드 리뷰, 테스트, 분석 도구를 활용한 Pull Request 단계에서의 Code Insights 기능

  • 계정의 비공개 콘텐츠 clone, push 작업 시 2단계 인증(2FA) 절차 必

 

 


4. Git flow 모식도

 

(1) Remote 저장소에서 Local로 코드 다운로드 (NW 통신 要)

 

git pull [원격 저장소명]

 

 

 

(2) Main Branch에서 분기 후 본인 작업 Branch 생성

 

git branch [Branch명]

 

 

 

 

(3) 생성한 Branch로 이동하여 작업 시작하기

 

git checkout [Branch명]

 

 

 

 

(4) 코드 작성 후 수정 내역 확인 (과거 코드와의 비교)

 

git diff

 

 

반응형

댓글