[GIT] Git & GitHub 알아보기

calm0_0·2023년 7월 10일
0

Git

목록 보기
1/4
post-thumbnail

Intro


평소에 개발을 하면서 Git을 자주 사용하게 된다. 작업 중인 레파지토리에 기능 개발을 위해 브랜치를 만들고, 커밋하고, 푸쉬하고, 머지하는 등 Git의 기능을 관성적으로 활용하고 있지만 Git의 원리나 흐름에 대해 깊이 있게 알지 못했다. 그래서 기본 틀에서 벗어나는 상황이 발생하면 많이 헤맸던 것 같다. Git에 대해 좀 더 공부해야겠다는 필요성을 느꼈고 이 책과 여러 자료를 통해 공부한 내용을 정리해보려고 한다.

Must Have 박미정의 깃&깃허브 입문


Git이란?


Git이란 분산형 버전 관리 시스템(Distributed Version Control System)의 한 종류이다. 먼저, 버전 관리 시스템이 왜 필요한지 알아보자.

버전 관리의 필요성

우리가 사용하는 스마트폰 앱, 게임 등은 자주 업데이트된다. 개발팀 입장에서 자주 일어나는 업데이트를 체계적으로 관리하려면 소스 코드가 언제, 어떤 변화가 있었는지 기록하고 추적해야 할 필요가 있다.
또한, 하나의 프로젝트에 여러 개발자가 함께 개발하면서 동시에 많은 기능을 추가하고 코드를 변경한다. 그러다 보면 같은 소스 코드를 둘 이상이 동시에 수정하여 충돌이 발생할 수 있다. 이러한 복잡한 상황을 체계적으로 관리하기 위해 버전 관리 시스템이 필요하다.

버전 관리 시스템이란

버전 관리 시스템은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템을 말한다. 버전 관리 시스템을 이용하면 각 개발자가 원하는 시점에 버전을 지정하고 공유할 수 있으며, 특정 버전으로 자유롭게 이동할 수 있다.

"분산형" 버전 관리 시스템

앞서 언급했듯이, Git은 분산형 버전관리 시스템의 한 종류라고 했다. 그렇다면 왜 분산형일까? 이를 이해하기 위해서 버전 관리의 종류를 알아보자.

버전 관리(형상 관리) 방식에는 크게 중앙 집중식과 분산 관리식으로 나뉘며 이를 대표하는 도구로는 중앙 집중 관리식의 SVN, 분산 관리식의 Git이 있다.

SVN은 자신의 로컬PC에서 커밋을 하면 바로 중앙 저장소에 반영이 되는 방식이며, Git은 로컬PC에서 커밋을 하면 지역 저장소에 반영이 되고 지역 저장소에서 Push를 하면 원격 저장소에 반영이 된다.

SVN은 모두가 중앙 서버에 있는 같은 자료를 받아오고, 내가 커밋을 한 순간 모두에게 공유된다. 이러한 방식은 직관적인 장점이 있지만, 두 사람이 하나의 파일을 동시에 수정하고 커밋했을 때 충돌이 일어날 확률이 높아진다. 또한 중앙 저장소에 문제가 생기면 모든 작업이 마비되는 단점이 있다.

반면에 Git은 직관적이지 않고 적응하는데 시간이 필요하지만, 소스코드를 주고 받을 필요 없이 (브랜치, 머지 등을 활용하여) 같은 파일을 여러 명이서 동시에 작업하는 병렬 개발이 가능하다. 또한 원격 저장소의 내용이 모든 협업자들의 지역 저장소에 저장이 되어 있는 분산 버전 관리이기 때문에 중앙 저장소에 에러가 생겨도 지역 저장소를 통해 복구하기가 용이하다.

Git의 기능 및 장점

깃은 가장 많이 사용되는 분산형 버전 관리 시스템으로 깃이 제공하는 기능으로는 다음과 같은 것들이 있다.

  1. 이력 기록 및 추적
    깃은 누가, 언제, 어떤 파일을, 어떻게 수정했는지 변경 이력을 기록한다. 기록된 이력을 바탕으로 프로젝트에서 발생한 문제를 해결하는 데 도움이 된다.
  2. 원격 저장소 및 공유
    서버 역할을 하는 원격 저장소와 각 개발자의 지역 저장소에 깃은 소스 코드를 분산하여 저장한다. 소스코드 뿐만 아니라 모든 변경 이력을 분산 저장하기 때문에 원격 저장소에 문제가 생겨도 지역 저장소를 이용하여 복원할 수 있다.
  3. 변경 이력 병합
    여러 개발자가 동일한 소스 코드를 변경하더라도 깃은 하나의 소스 코드 파일에 대한 여러 변경 이력을 통합하는 기능을 제공한다.

GitHub란?


깃허브란 깃 프로젝트를 지원하는 호스팅 서비스를 말한다. 깃 저장소 서버를 대신 유지 및 관리해주는 서비스이며 무료로 이용할 수 있다. 깃 기반의 수많은 오픈 소스 프로젝트들이 깃허브에 공개되어 많은 사람들이 보며 활용 가능하다.

GitHub의 기능 및 장점

깃허브가 제공하는 기능에는 다음과 같은 것들이 있다.

  1. 호스팅 서비스
    깃을 이용해 프로젝트를 진행하려면 원격 저장소가 필요한데, 깃허브를 사용하면, 직접 원격 저장소 서버를 구축하는 대신에 깃허브의 호스팅 서비스를 이용할 수 있다.
  2. 공개 및 비공개 저장소
    소스코드를 누구나 볼 수 있는 공개(public) 저장소와 제한된 인원에게만 제공하는 비공개(prvate) 저장소를 지원한다.
  3. 고급 기능
    깃 프로젝트 저장소 역할 이외에도 다양한 기능을 제공한다. 깃허브 액션과 깃허브 디플로이먼트 API를 이용해 빌드 및 배포 자동화를 구성할 수도 있고, 깃허브 프로젝트를 이용해 협업을 관리할 수 있다.

Git & GitHub 기본 흐름


깃과 깃허브를 사용하면 다음과 같은 흐름으로 지역 저장소(Local Repository)와 원격 저장소(Remote Repository)에 반영된다.

지역 저장소 -> 원격 저장소

  1. git init 명령어로 해당 프로젝트를 깃 지역 저장소로 지정
  2. 파일 수정
  3. git add 명령어로 수정한 파일을 스테이징 영역으로 옮김
  4. git commit 명령어로 지역 저장소에 저장
  5. 지역 저장소에서 발생한 변경 내역을 git push 명령어로 원격 저장소에 반영

원격 저장소 -> 지역 저장소

  1. 프로젝트 전체를 git clone 명령어로 지역 저장소에 내려 받기
  2. 일부 변경 사항만 git pull 명령어로 내려 받기


Reference
https://www.yes24.com/Product/Goods/103525595
https://inpa.tistory.com/entry/GIT-%E2%9A%A1%EF%B8%8F-%EA%B0%9C%EB%85%90-%EC%9B%90%EB%A6%AC-%EC%89%BD%EA%B2%8C%EC%9D%B4%ED%95%B4
https://velog.io/@khakhid/%EC%B4%88%EB%B3%B4%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EA%B9%83%EA%B9%83%ED%97%88%EB%B8%8C
https://dzzienki.tistory.com/46

profile
공부한 내용들을 정리하는 블로그

0개의 댓글