/ FUNDEMENTAL

Git, Github 왜 써야 해?

#git #github

목차

Git, Github 왜 써야 해?

Github를 사용하라 는 마치 마른하늘의 날벼락마냥 내게 미션처럼 주어졌다. 하라는 대로 따라하면 할 수는 있겠지만 별로 유용해보이지도 않는데(구글드라이브로 하면 안되나?) 굳이 내가 왜 이 Github에 익숙해져야 하는지 그 이유가 궁금했다. 개인적으로 ‘왜’ 인지 이유를 알아야 의욕이 불타오르기도 하고 이유를 스스로 납득하면 Github에 익숙해지는데 더 동기유발도 되고 애정도 생길 것 같아 스스로 공부해볼 겸, 혹은 내가 궁금해하는 점을 똑같이 느끼는 누군가를 위하여, Git과 Github에 대하여 Github와 markdown을 이용하여 연습삼아 글을 몇글자 적어본다.

Github를 검색하면 이렇게 다양한 정보를 얻을 수 있다. 위키결과

읽어도 이해가 잘 안가는 말이 태반이기에 이런 wiki문서를 내가 쉬운버전으로 번역하여 다시 작성해본다고 생각하고 글을 작성하려고 한다.

Github를 왜 사용해야하는지 이해하기 위해서는 먼저 Git에 대한 이해가 필요하다.


Git이란 무엇인가?

Git이란 분산형 버전관리시스템(DVCS)인데 버전관리시스템(VCS) 에 대해 먼저 알아보면 소스 코드를 관리할 때 버전별로 즉, 변화가 생길때마다 새롭게 저장을 하여 롤백하기 쉽게 하는 그런 시스템이라고 생각하면 될 듯 하다. 어려울 수 있는 말인데 예를들어 메모장을 열어서 작업 중간마다 저장을 하면 하나의 파일에 덮어씌워지는 구조이지만 Git같은 경우는 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 불러올 수 있게하는 시스템이다. 단순하게 생각해봐도 VCS를 사용하면 파일을 잃어버리거나 혹은 잘못 고쳤을 때도 쉽게 복구가 가능하다. 한마디로 ‘다른이름으로저장’ 을 수정이 될때마다 수행해서 백업해준다는 것. 다만 각 버전의 변경사항만 기록되기때문에 여러 번 변경되고 저장된다고 하더라도 용량을 몇배로 차지하지는 않는다.

그렇다면 버전관리시스템 앞의 ‘분산형’이라는 말은 무엇일까? 분산형 버전관리시스템은 중앙집중식과 달리 중앙서버자체가 없거나 그 역할을 하는 컴퓨터가 있다고 하더라도, 그 서버가 망가졌을 때 다른 컴퓨터로부터 자료를 복구할 수 있다는 특징이 있다.

Git은 왜 필요할까?

개발분야에서 협업을 하다보면 수없이 많은 오류와 수정이 반복된다. 그러다보면 프로젝트를 과거로 되돌려야하는 일이 오는데 이럴 때 Git은 변화가 생긴 지점을 찾아 다시 되돌리기가 편하기 때문에 중간마다 따로 백업을 해둘 필요가 없다. 또한 다른사람들과 일을 같이 할 때도 수정사항을 쉽게 공유가 가능한 것도 Git이 가진 큰 장점이다.

조금 더 자세히 들어가보면

  • 분산개발이 가능하다. Git을 사용하는 전체 개발 내역을 각 개발자의 로컬 컴퓨터로 복사하여 작업 후, 나중에 수정된 내역을 합칠 수 있다.
  • 비선형적인 개발이 가능하다. Git은 브랜치(Branch)라는 개념이 사용되는데 쉽게 말해서 프로젝트의 가지치기가 가능하다.
  • 효율적인 개발이 가능하다. Git은 변경 이력이 많더라도 변경된 내용만 처리한다는 점에서 메모리적인 효율성이 뛰어나다.

만약 Git을 사용하지 않는다면?

Git을 사용하지 않으면 프로젝트를 진행할 때 서로 일한 내용 공유하려고 소스코드를 USB에 담아서 다른사람한테 넘기거나 메일 등 다른수단으로 보내야 한다. 그러면 A가 수정한 내역이 B에게 즉각적으로 전달이 안 되기 때문에 다른 메신저를 이용하거나 전화하는 등의 추가적인 소통이 필요하여 A와 B가 동시에 작업을 진행하기가 어렵다. 또 작업을 완료해서 작업물을 업데이트 했는데 작동이 되지 않는다면 다시 이전버전으로 돌려야하는데 어디서부터 어떻게 손을 대야 할지 막막한 사태가 벌어지는 것이다. 또한 누가 어떤 부분을 어떻게 고쳤는지 확인하기 어려워 마지막으로 파일의 어떤 부분이 변경됐는지 확인하려면 일일이 대조 작업을 해야 한다.


Github?

image

Git이 분산버전관리시스템이라는 소프트웨어라면 Github는 Git에서 진행되었던 각각의 내용들을 공유할 수 있게 공간을 제공하는 서비스 라고 생각할 수 있다. 다수와 협업을 하면서도 물리적인 공간에 모여있을 필요 없이 원활하게 일을 공유할 수 있게 해주는 가상공간이라고 생각하면 쉬울 것이다.

Github는 전 세계의 개발자들이 이용하고 있기 때문에 내가 프로젝트를 진행하며 작업했던 소스코드들을 공개, 공유할 수 있고 그렇게 되면 전 세계에서 나와 비슷한 프로젝트를 가지고 고민했던 사람들과 소통하며 피드백을 받거나 줄 수 있다.
오픈소스의 성지라고 불릴만큼 세계 곳곳의 뛰어난 프로그래머들이 작성한 수많은 코드들을 살펴볼 수 있고 본인이 의지만 있다면 코드를 올린 후 코드 리뷰도 받을 수 있으니 코딩 실력을 향상시키는데 활용하면 좋을 것이다.


이번에는 Git과 Github에 대해 알아보았는데 이 글을 읽고 Github를 사용하려는 사람이 왜 Github와 친해져야 하는지 나처럼 이해가 되었기를 바라며.