codestates / codestates/ds-blog

[이동훈] What is Git, and Github (concept explain)

Open
#58 8 comments 1 reaction 0 assignees View on GitHub
Dominant language
No language data
Stars
2
Forks
4
PR merge metrics
No merged PRs in 30d

Description

https://github.com/kroonstazy/personal_blog/issues/2#issue-692683720

# Intro : Do you know git, and GitHub? ~~(두유노 김치?)~~
### 여러분은 git, GitHub가 무엇인지 알고 계십니까?

"아, 이름만 들어봤어요." 또는 "잘 몰라요." 라고 생각하시는분은 저와 함께 git 과 GitHub 가 무엇인지 알아보도록 하고
git 과 GitHub를 잘 알고있고, 사용하고, 무엇인지 자신있게 설명 하실 수 있는분들은 **뒤로가기** 누르시거나,
댓글로 추가설명 및, 오류 지적해주시면 감사하겠습니다.

설명에 앞서 제 이야기를 해보자면, 저는 데이터사이언스 과정에 참가하기 이전엔 git, github 뭔지 잘 몰랐습니다.

이런 저런이유로, 깃허브에 들어가 필요한 파일들을 다운보며 든 생각은, 많은 사람들이 깃허브를 이용하여 자신들의 창작물들을 배포?Publish?하는
"파일쉐어링 서비스인가 보다." 라고 이해하고 있었고.

"깃허브 사용해보신적 있어요?, 깃허브가 뭔지 아세요?"
라고 질문을 받을 때면, "예!" 라고 당당하게 대답했던 적도 있습니다. (모르는 사람이 더 당당하다고... 아무튼...)

어느날 우연히 노마드코더님의 영상 ['깃. 깃허브. 기초개념 잡아드림. 5분 순삭.'](https://youtu.be/YFNQwo7iTNc) 보면서도 완전히 이해 하지 못하여 "아... 그런가 봉가..." 하면서 넘어 갔습니다.

"백문이 불여일견; 백번 질문 하는것 보다, 한번 보는것이 낫다." 라는 말이 있듯이.
어제 Challenge Assignment중 fork, Pull Request 연습하면서, "아, 이게 그 말이구나!?" 라고 깨닫고, 느낌점을 여러분들과 나누어 보려 합니다.

# So, what is a git. (GitHub는 조금 뒤에 설명)
위키피디아에서 가져온 설명을 보면.

"Git is a distributed version-control system for tracking changes in source code during software development."
" '깃'은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다." 라고 해석이 되어있는데, 최대한 간단하게 git의 본질의 기능만 설명해보자면, " version-control (버전 관리)에 도움을 주는 시스템이다." 라고 할 수 있겠습니다.

이게뭔... 라고 느껴지신다면.

#### 그나마 소비자/유저가 사용할 수 있는 가장 git과 비슷한게 하나 있습니다.

맥(Mac)에는 '타임머신'이라는 백업 기능이 있습니다.

백업은 언제생길지 모르는/ 혹시 모르는 data loss(데이터 손망실)에 대비하여, 개인에게 중요하다고 판단되는 자료들은, 외장하드, 외장 USB에 복사본을 생성하여 안전하게 보관하는것을 말 합니다.

맥의 타임머신은 사용자 컴퓨터에있는 문서, 사진, 음악과 같은 전반적인 자료들을 '안전한 장소'(사용하는 컴퓨터가 아닌, 물리적으로 분리된 공간에) 복사하여 저장하는 일반적인 백업 기능을 수행하지만, 다른 데이터 백업 서비스와 가지는 중요한 차이점이 있습니다.

## 그것은 바로!

카페베네_엔딩_크레딧 ~~커쥬아 마 걸~.~~

**장난입니다.**

## 바로!!!!
#### 타임머신은, 단순히 '파일만' 백업해두지 않습니다.

무슨말이냐 하면, 일반적으로 우리가 생각하는 백업은 복사기로 복사한것과 같이, 똑같은 파일을 만드는것이 아니라,

파일이 어떻게 변경이 되어왔는지를 기록하는 방식입니다.
"그래서 뭐 어쩌라고요..." 라고 생각드시는 분들께 설명을 추가하자면...

"우리는 종종 인생을 살면서, 아 그때로 돌아갈수 있으면 좋을텐데..." 라는 후회를 합니다. ~~(저는 그렇습니다.)~~

타임머신은 적어도 (컴퓨터 상에서 일어났던일 일들에 대해서) 그것을 **가능하게** 해줍니다.
지금은 필요가 없다고 생각되어 무심코 지워버린 문서파일, 사진 파일도, 타임머신을 통해 "시간을 거슬러 올라가다보면" 복구 할 수 있게 해줍니다.

타임머신은 백업된 파일들이 변경된 부분이 있는지 확인하여, 사용자가 파일을 변경 할 때마다, 새로운 **'버전'**을 생성하여.
변경되기 전의 파일(버전 1.0)과, 새롭게 변경된 파일(버전 1.1)을 각 각 저장하여 보관합니다. (버전 컨트롤)

한가지 파일을 여러가지 버전을 저장한다는것은 실제로 불가능한 일은 아니지만,
내 컴퓨터안의 모든 파일들을 내가 혼자서 수작업으로 버전 컨트롤한다고 했을 때 얼마나, 귀찮고 짜증나는 작업이 될까 상상해 보세요...

'타임머신'은 Mac OS 백업과 컴퓨터 내의 파일들의 버전 컨트롤 수월하게 해주는 애플에서 제공해 주는 Mac OS의 기능.
(Apple Time Machine 은 2007도에 소개가 되었으니 git의 기능 일부분을 일반 사용자가 이용 할 수 있게 해준것.)

# 아니, 그래서 git이 뭐냐고. ~~(버전관리 해준다고!!!!)~~

git은 마치 파일을 24시간 365일 감시 하는것 같아서, 누가, 어떤 파일을, 언제, 어떻게 바꾸었는가(수정하였는가)와 같은 모든것을 기록하여 버전관리 (**_Version-Control_**)를 수월하게 해주는 인터페이스.

# GitHub는 이와 같은 git을 사용하는 사람들을 이어주는 클라우드 플랫폼.

### 우리의 일상에서 사용하는 것으로 비유를 하자면...
G suite으로 파일을 공유를 하면, 여러명이서 동시에 하나의 파일에서 일을 할 수도, 편한시간에 접속하여 일을 가능하게 해주는 건 구글의 클라우드 서비스 덕분입니다.

github는 git을 사용하는 사용자들을 이어 주는 플랫폼이면서, git의 기능도 수행합니다.

# github에서 버전 컨트롤 하는건 어떻게 알아?
밑의 사진은 제가 codestates/ds-blog 리파지토리 (repository)에서 작성한 블로그 입니다.

Screen Shot 2020-09-04 at 4 35 53 PM

자세히 보시면, 몇시간 전에 제가 제목을 어떻게 수정했는지가 보여 집니다.

### 다른 예 로는 제가 codestates/help-desk-ds 에 올린 질문입니다.

Screen Shot 2020-09-04 at 4 40 12 PM

.doc파일을 아무리 수정하고 고치고 어쩌고 해봤자. .doc파일 property를 확인하면, 언제 파일이 만들어 졌는지, 마지막으로 열린 날은 언제인지, 마지막으로 편집된 날은 언제인지 정도만 알 수 있습니다.

그렇지만, 여기에선, 제가 언제 레이블/라벨을 추가했고, 언제 thread를 닫았고, 열었고, 이런 세세한것들까지, 기록이 됩니다.

# 그리고 궁극적인 목적

업로드한 코드가 이전에 업로드 한것과 비교했을때
어디가 어떻게 바뀌었는지(수정이 되었는지), 어디가 얼마나 바뀌었는지 알 수 있습니다.

Screen Shot 2020-09-04 at 4 51 40 PM

이런 것들로 버전 컨트롤이 어떻게 되고 있는지 정도의 컨셉을 쉽게 잡을 수 있을 것 같습니다.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.