개발자라면 깃허브는 필수다 라는 말을 다들 한 번쯤은 들어봤을 거다. 그만큼 많이 쓰이고 쓸줄 알아야 하는 플랫폼인 것이다. 

 

 

컴공을 전공하면서 깃허브는 무조건 필수라고, 회사 취업해서도 많이 쓰이는 거니까 꼭 알아두라고 주변에서 강조를 많이했다. 그래서 git init... git add.. 등의 커맨드를 치면서 깃허브에 얼레벌레 코드들을 올릴 순 있었지만, GitHub을 잘 알지 못한 상태에서 겉햝기로만 사용하는 꼴이니 매우 찝찝했다.

그래서 이렇게 블로그를 통해 포스팅을 하게 되면 나도 이 글을 읽을 수도 있는 여러분들에게 정보를 드리기 위해 많은 자료를 찾아보고 정리하게 되니 이 기회에 깃허브라는 요 아이를 가능한 마스터(?) 해보도록 하겠다 

※물론 저도 배우면서 쓰는 입장이기 때문에 오류가 있을 수도 있는 점 양해 부탁드립니다. 오타, 오류 지적 환영합니다 :)

 

 

 


1. Git 이란?

2. Git의 동작원리

3. GitHub 란?

 

 

깃허브에 대한 간략한 설명은 유튜브에서 잘 나와있어 링크와 함께 첨부 (https://youtu.be/YFNQwo7iTNc)

노마더코더 라는 채널인데, 요즘 워낙 뜨고 있는 채널이라 아는 사람들은 알고 있을거라 생각한다. 유익한 정보들을 쉽게 설명해주는 채널이니 구독해두면 많이 얻어가는 것이 있을 것이다! 그리고 또한 한국어 지원이 되는 Git 사용 설명사이트가 있어 이 링크도 같이 첨부하겠다. 시간이 있다면 저 사이트를 정독하는게 내 블로그보다 얻어갈 것이 훨씬x100 많을 것이다

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

 

Git - Book

 

git-scm.com

 

유튜브에 나와있는 걸 참고 + 구글링을 통해 글을 정리해보도록 하겠다.

 

 

 

 

1. Git 이란?

 Git 파일의 변화(몇 시에, 무엇을, 어떤 걸...)를 기록할 수 있는데 이의 큰 장점은 한 파일에 대한 각각 다른 버전(최종, 진짜 최종, 진짜 찐 최종, 진짜 찐막막)들을 보관할 수 있다. 즉, 버전관리가 되는 특징을 갖고있는 것이다. 

그렇게 되면 만약에 전 버전의 파일을 잃어버리거나 다시 가져오고 싶을 때 로드가 가능하고, 언제 어떤 것을 고쳤었는지 기억이 안날 때 추적이 가능하고... 이렇게 잠깐 쓰기만해도 정말 많은 강점이 있다는 걸 느껴게 될 것이다.

만약 Git을 사용하지않고 그냥 각기 다른 버전들을 백업해두어 저장한다면 용량이 어마무시해지겠지(;◔д◔)

 

 

 

2. Git의 동작원리

Git은 분산버전관리 시스템(Distributed Version Control System, 즉 DVCS) 을 사용하게 되는데, 이 때 분산버전관리 시스템이 무엇인지 아리송하실 분들을 위해 먼저 짚고 지나가겠다. 

한 프로젝트를 다른 개발자들과 함께 작업하는 경우, 개발자 A는 파일 A버전으로 작업하고 있고, 개발자 B는 파일 B버전으로 작업을 하게 된다면 총체적 난국이 예상 될 것이다 :(  이러한 문제점들을 막기 위해 사용되는 방식들이 몇 가지 존재하는데, 이 때 분산버전관리 시스템이라는 용어가 나오게 되고 이외에도 중앙 집중식 버전관리가 존재한다. 우선 중앙 집중식 버전관리부터 설명해보겠다. 

 

■ 중앙 집중식 버전관리 ■

출처: https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC%EB%9E%80%3F


파일을 중앙 서버에 올려놓아 관리를 하는 방식이다. 개발자들은 파일을 관리하고 있는 중앙서버에서 파일들을 내려받아 사용하면 되는 것이다. 
하지만 중앙 서버에서 올려놓은 것이니, 이 서버에 대해  문제가 발생하거나 오프라인 상태에서는 다른 개발자들과 협업을 할 수 없다는 단점을 갖고있다. 

 

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

출처: https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC%EB%9E%80%3F

그림에 보이는 것과 같이 클라이언트의 컴퓨터에도 Version Datavase를 갖고있다. 이는 저장소 자체를 복제해서 가져온 것이다.(히스토리까지 복제를 해서 갖고 있단다) 서버에 문제가 생기거나 오프라인 상태이더라도 개발자들은 복제했던 저장소를 사용해 계속 협업을 할 수 있다는 큰 장점을 갖는다. 

 

뭔가 더 명확한 비유해서 설명할 수 있는 것이 생각나면 좀 더 살을 덧붙여서 설명해보겠다.  

 

 

 

 

 

3. GitHub 란?

앞에서 Git에 대한 설명을 마쳤고, 그렇다면 GitHub란 무엇인가? 저 유튜브 영상을 보면 알겠지만 Git과 GitHub는 커피와 커피숍같은 것이라 비유를 한다. 그러니까 즉, 클라우드에 있는 Git 제공자라고 한다. 파일의 변화가 기록된 Git을 GitHub라는 클라우드에 푸쉬하는 것이다. 

GitHub를 통해 우리는 다른 개발자들과 프로젝트를 진행할 때 파일과 히스토리들을 공유하여 협업할 수 있는 것이다. 그러니 당연히 개발을 하는 사람이라면 GitHub를 할 줄 알아야한다는 말도 나오는 것 같다. GitHub 사이트를 통해 유명한 대기업들의 많은 오픈소스 프로젝트를 볼 수도 있으니 학습을 위해서라도 GitHub를 사용할 줄 알아야겠다. (가끔 교수님이 깃허브에 있는 소스들로 공부해보는 것도 좋다고 말씀하셨던 것같다..)

 

 

 

 

 


 

 

 

이렇게 최대한 단순하게 요점만 찝어서 글을 써보려고 노력해봤다. 하지만 오타나 오류에 대한 피드백이라던지, 내가 사용하면서 더 알았으면 하는 내용이 있으면 다시 와서 글을 계속 고쳐보겠다..!

읽어주셔서 감사합니다 다음 글에선 GitHub 사용에 대한 전반적인 설명을 담은 글로 찾아오겠습니다 :)