개발 기록

211026 Git과 Github의 차이 본문

TIL

211026 Git과 Github의 차이

수염차 2021. 10. 26. 14:54

(+) 버전관리

버전 관리 시스템은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템

 

시간에 따라 파일의 변경사항을 추적하고 기록함으로써,

버전 관리 시스템은 이전 버전으로 복구하거나 조회할 수 있는 기능을 제공

코드가 수정될 때마다 파일로 일일이 따로 저장해주거나 수동으로 백업해두기는 매우 번거로운 일인데,

이런 일을 대신해준다

어떤 부분이 수정됐는지 쉽게 볼 수 있고 수정된 부분을 이전 버전으로 롤백 하는 등의 편리한 기능들을 가진다

 

** 중앙집중식 버전 관리 (CVCS) & 분산 버전 관리 시스템(DVCS)

 

 

중앙집중식 버전 관리 (CVCS)

 

버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리
중앙 서버에 올라간 소스코드를 내려받아 작업하고 결과물을 commit하여 서버로 올려보내는 방식 commit하면 바로 중앙서버로 업로드 된다

서버가 다운되면 버전관리에 문제가 생김

ex) SVN

 

 

 

 

 

 

분산 버전 관리 시스템(DVCS)

 

버전 관리 자료가 하나의 원격 저장소와

분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리


개발자별로 원격 저장소의 자료를 자신의 로컬 저장소로 복사하여 작업한 후 변경 내용을 로컬 저장소에서 우선 반영(버전 관리)한 다음 이를 원격 저장소에 반영한다.

 그래서 서버가 다운되더라도 로컬에 모든 이력이 저장되어 있기 때문에 작업 가능

 

ex) Git

 

 

 

 

 

 

 

* Git 이란

Git 은 소스코드를 효과적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템'

개발중인 프로젝트 파일들이 담긴 폴더에서 git을 시작하면, 지금부터 폴더의 모든 수정내역들이 저장되는 .git이라는 저장공간이 생긴다

 

 

 

* git 특징

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

각 파일에 대한 변화를 저장하는 것이 아니라 현재 프로젝트의 상태를 저장

사진을 찍는 것 처럼 현재 프로젝트의 전체 상태를 포착하는 것

 

2. 거의 모든 명령을 로컬에서 실행

거의 모든 명령이 로컬 파일과 데이터만 사용하기 때문에 네트워크에 있는 다른 컴퓨터는 필요 없다

예를 들어 Git은 프로젝트의 히스토리를 조회할 때 서버 없이 조회한다. 그냥 로컬 데이터베이스에서 히스토리를 읽어서 보여 준다. 그래서 빠른 속도로 히스토리를 조회할 수 있다. 

어떤 파일의 현재 버전과 한 달 전의 상태를 비교해보고 싶을 때도 Git은 그냥 한 달 전의 파일과 지금의 파일을 로컬에서 찾는다. 파일을 비교하기 위해 리모트에 있는 서버에 접근하고 나서 예전 버전을 가져올 필요가 없다.

즉 오프라인 상태이거나 VPN에 연결하지 못해도 막힘 없이 일 할 수 있다.

 

3. 브랜치

사용자는 본인의 코드에서 또 다른 독립적인 로컬 브랜치를 만들 수 있다. 즉, 새로운 아이디어를 시도하고, 생산적인 업무를 위해 또다른 브랜치를 만들고, 이전 브랜치로 다시 복구하고 쉽게 삭제,병합이 가능

 

 

 

 

*Git 동작 개념

1) 워킹 디렉토리에서 파일을 수정

2) staging Area에 파일을 add해서 커밋할 스냅샷을 만든다 . 모든 파일을 추가할 수도 있고 선택해서 추가도 가능

3) staging Area에 있는 파일을 커밋해서 Git 디렉토리(로컬 레포지토리)에 영구적인 스냅샷으로 저장

 

 

-Working Directory : 우리가 사용하고 있는 컴퓨터의 작업 디렉토리

-Staging Area : 깃은 소스코드가 변경되는 사항들을 모두 파악할 수 있다. 변경사항들을 add 시켜준다면 코드와 이력들이 이곳에 올라가게 된다.

-Local Repository : Commit을 하게 되면 원격 저장소에 올라가기 전 최종적으로 우리의 컴퓨터에 저장되는 공간이다.

 

 

*Github란

GitHub은 Git의 원격 저장소를 제공하는 웹서비스

단순 저장소의 역할만 하는 것이 아니라, 협업에 필요한 이슈 관리, 코드리뷰 등 다양한 기능 포함

GitHub를 통해, 다른 사람과 코드 공유가 가능하다

오픈소스 코드들을 내가 수정해서 더 나은 코드로 만들수도 있고, 다른 프로그래머에게 수정코드를 제안받을 수도 있고, 내가 혹은 다른 누군가가 기업의 프로젝트에 기여할 수도 있다. 

세계 곳곳의 실력있는 개발자들이 작성한 코드들과 프로젝트들을 오픈소스로 확인해볼 수 있는 곳이다.
따라서 Github는 오픈소스의 성지라고 불린다.

 

 

#  깃허브 페이지 - 정적 웹 사이트 호스팅 서비스

: 파일을 웹 상에 공개하거나, 저장소 특정 브랜치에 html,css,javascript로 구성된 파일을 올려두고 웹사이트로 공개 가능

# 깃허브 액션

: 깃허브에서 공식적으로 제공하는 CI/CD (작업한 소스 코드를 저장소에 전달 후 배포까지 하는 과정) 툴, 즉 개발의 워크 플로우를 자동화할 수 있게 도와주는 툴이다

 

한마디로,
Git은 카메라, Github는 유튜브!

Git과 Github는 커피 카페의 관계 (?)

 

Git으로 로컬 저장소에 작업한 내용을 저장한 뒤 해당 내용을 Github에 업로드하는 형식으로 사용

 

 

 

 

참고:

https://eon7500.tistory.com/12

https://escapefromcoding.tistory.com/281

https://kinsta.com/knowledgebase/git-vs-github/

https://git-scm.com/book/en/v2

 

Git - Book

 

git-scm.com

 

'TIL' 카테고리의 다른 글

211027 TIL (서버리스 배포-프론트엔드 1)  (0) 2021.10.27
211026 TIL  (0) 2021.10.26
211025 TIL  (0) 2021.10.25
211017 WIL (5주차)  (0) 2021.10.17
211010 WIL (4주차)  (0) 2021.10.10
Comments