어느 누구에게도 물어봐도 필수라고, 중요하다고 얘기하지만 막상 사용해보려 하면 너무나 혼란스러운 Git, GitHub! 이번 공동 세션을 통해 한 번 찍먹해봅시다. 이번 세션은 깃과 깃허브를 처음 들어보는 분들을 기준으로 작성되었습니다! 이 점 유의해주세요~🕺

Introduction - why git?

Git이란 버전 관리 시스템(Version Control System)입니다. 코드 파일과 같은 작업물은 시간이 지남에 따라 수정사항들이 발생하고, 어쩔 때는 파일 자체가 지워지기도, 병합되기도 합니다. 버전 관리 시스템은 이러한 변경 사항들을 추적하며 어떤 생산물의 수정 사항을 체크하거나, 특정 버전으로 되돌아가거나, 누가 언제 어떤 이슈를 발생시켰는지를 알아내거나, 실수로 파일이 삭제되거나 수정되었 때 복구하는 등의 작업이 가능하도록 도와줍니다.

사실 git 외에도 꽤 많은 버전 컨트롤 시스템이 존재합니다. 그런데 왜 우리는 git/github를 사용하는 것일까요? git과 github의 장점을 **‘분산 버전 관리 방식’**과 **‘스냅샷을 이용한 버전 컨트롤’**이라는 키워드를 통해 살짝 옅봅시다.

분산 버전 관리 방식

스크린샷 2023-03-21 오후 9.09.22.png

스크린샷 2023-03-21 오후 9.09.32.png

Git 이전에는 로컬 버전 관리(왼쪽), 중앙집중식 버전 관리(오른쪽)으로 파일 관리를 해왔습니다. 로컬 버전 관리의 경우 우리가 로컬 컴퓨터에서 하는 그런 방식이라고 생각하면 되고,

중앙집중식 버전 관리의 경우 파일 관리 서버를 따로 두고 거기에서 각각의 클라이언트들이 파일 관리 서버에서 파일을 다운받아 사용하는 방식입니다.

이에 반해 git은 분산 버전 관리 방식을 택합니다.

스크린샷 2023-03-21 오후 9.15.04.png

분산 버전 관리 시스템에서 각각의 클라이언트는 단순히 파일의 마지막 스냅샷(마지막 고 형태)을 가져가는 것이 아니라, 그냥 히스토리까지 통째로 복제합니다. 즉, 서버에 문제가 생겨도 각각의 클라이언트의 복제물을 통해 깔끔한 복원이 가능합니다(우리가 가끔 쓰는 git clone이라는 명령어를 잘 생각해봅시다).