brunch

매거진 Git과 Github

You can make anything
by writing

C.S.Lewis

by anonymDev Feb 24. 2019

0. Git과 GitHub은 무엇일까?

git & github

0. 글을 쓰게 된 계기는


Git & GitHub이란 주제로 대학교에서 강의를 하게 됐기 때문이다. 강의 자료도 준비해야 하고 스스로도 정리해볼 겸 적어본다.




1.Git 과 Github은 뭘까


Github은 Web Service인데 주요 기능으로 Git 원격 저장소를 제공한다. 

구글 드라이브처럼 내 파일들을 원격 저장소에 올릴 수 있다.



Q. 그러면 Github 대신에 GoogleDrive 쓰면 되는 거 아닌가요?


A. 두 서비스가 원격 저장소를 제공해주는 점에서 동일한 기능을 제공하는 건 맞다. 하지만 GoogleDrive에선 Git을 사용할 수 없다. 파일 올리고 내리는 거 외에 사용하는 기능이 없다면 GoogleDrive가 더 편하다.


Q. 근데 Git이 뭐죠?


A. Git은 Distributed version control system이다. 직역하면 '분산 버전 관리 시스템'이다.


Q. 버전 관리(Version-control)는 뭐고 분산(Distributed)은 뭔데요?


A. 변화/변경(Change)를 관리 (Manage)하는 것.

Version control

: the management of changes to documents, computer programs, large web sites, and other collections of information



Q. 앞에 분산을 붙이면?


A. 분산버전관리 = 분산해서 변화/변경을 관리하는 것.


쉽게 말해서 여기저기에서 버전 관리 할 수 있다.


정리하면,

Git은 파일 버전들을 분산해서 관리할 수 있는 도구이다.

Github Git 사용할  있는 리모트(원격) 공간/저장소를 제공해준다.


2. 버전 관리는 왜 하는가



최종 굴레에 빠져본 경험이 있는가


"조별과제_영미최종.docx"

"조별과제_영미최종_철수최종.docx"

"조별과제_영미최종_철수최종_갑수최종.docx"

"조별과제_영미최종_철수최종_갑수최종_최종제출.docx"

"조별과제_영미최종_철수최종_갑수최종_최종제출_진짜최종.docx"

.....

"조별과제_영미최종_철수최종_갑수최종_최종제출_진짜최종_영미수정_교수님수정.docx"

"조별과제_영미최종_철수최종_갑수최종_최종제출_진짜최종_영미수정_교수님수정_제발최종........docx"


흔히 사용하는 버전 관리 방법이다. 과거 파일을 백업 떠두는 방식이다. 혼자 작업하거나 작은 파일을 단기간에 걸쳐 수정한다면 나쁘지 않은 방법이다.




하지만 조별과제는 '너도나도 여기저기서' 파일을 수정하고 추가한다.



첫 번째, 여러 개의 파일 버전을 일관되게 관리할 수가 없다. 

: A의 컴퓨터에 있는 파일과 B의 컴퓨터에 있는 파일이 같은 버전이라고 보장할 수 없다. 꼭 누군가는 옛날 파일가지고 작업을 하고 있다.


 두 번째, 누가/무엇을/어떻게 변경했는지 기록하고 내용을 공유하기 어렵다.

: 어떤 변경이 있었고 누가 변경을 했는지 추적할 수 없다.


세 번째 의도치 않게 서로의 변경 내역을 덮어쓰거나 지울 수 있다.

같은 파일을 여럿이서 수정하다보면 누군가의 내용은 꼭 덮어써진다. 의도치 않은 오류가 발생한다. 예를 들면 영수가 작업한 부분에 철수의 내용을 넣게 되는 경우 영수의 내용은 사라진다.


네 번째 수정한 내용 이전 상태로 복구하기 번거롭다.

변경 전 버전에 대한 정보가 없다. 직전에 변경한 내용이 아니라면 되돌리기 힘들다. 변경한 부분이 많다면 한땀한땀 되돌려야 한다.


마지막, 취합은 조장이 하게 될 것이다.

하지만 사람 손을 타게 되면 어디서든 실수는 있기 마련이다. 엔지니어는 사람이 하는 일을 믿지 않는다.



3. 마무리


Git을 쓰면 위 네가지 문제점에 대해서 자유로워질 수 있다. 특히 작업물의 크기가 커지면 커질수록 진가가 드러난다. 다음 글에서는 "그렇다면 어떻게 사용할지"에 대해서 알아보자.


다음: Git&Github은 왜 사용하는걸까 2  Commit 기초편


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari