본문 바로가기
소년의 IT 쉽게 이해하기/개발 쉽게 이해하기

깃허브(Github)는 뭘까요?

by Circlezoo 2022. 5. 22.

 우리 주변 개발자들의 이야기를 들어보면 깃허브라는 말을 많이 씁니다. 

 

깃허브에 업데이트했어요~! 깃허브에서 오픈 소스 찾았어요~! 깃허브에서 본 건데 그걸 활용하면 될 것 같아요! 등등의 말을 듣습니다.

깃허브? 그게 뭐죠? 개발자들의 커뮤니티 같은 것일까요? 뭐 하는 걸까요?

 

Q. 깃허브(Git hub)란 뭔가요?

 

출처: https://velog.io/@jini_eun/Github-Github%EB%9E%80-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC

 깃허브는 깃(Git) + 허브(hub)의 합성어로 깃허브를 알기 전에 깃을 먼저 알아야 할 필요가 있습니다.

 

형상 관리 도구 중 하나로, 컴퓨터 파일의 변경 사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 관리 시스템이다
출처: 위키백과

여기서 말하는 형상 관리 도구는 버전 관리 시스템이라고도 불립니다. 

소프트웨어 개발에서 필수적인 소스코드를 효과적으로 관리할 수 있게 해 준 것이죠.

 

Q. 소스코드를 효과적으로 관리해준다? 이게 무슨 소리인가요?

 

출처: geralt on Pixabay

 

 보통 개발자들은 하나의 프로젝트를 개발하기 위해서 프로젝트 파일을 만들고 그 프로젝트에서 각자 작업을 진행해 점점 코드를 추가하는 방식을 가지고 있습니다.

즉, 프로젝트 코드를 다운로드하고 거기에 자신의 코드를 입력한 다음 그것을 다시 업로드하는 것이죠. 이 과정을 Git이라는 것이 도와주는 것입니다.

 

Q. 업로드를 도와준다고? 그냥 업로드하면 되는 거 아니야? 뭘 도와준다는 거지?

 

 Git은 여러 명이 동시에 작업하는 병렬 작업 방식을 지원합니다. 여러 명이 동시에 작업을 하다 보면 개발자 1과 개발자 2가 동시에 같은 코드를 작업하여 충돌하는 문제가 발생할 수도 있는 것입니다. Git은 이런 충돌 문제를 해결해주는 것입니다.

 

 이런 충돌 문제를 어떻게 해결해주는 걸까? 개발자가 Git에 코드를 올리는 것을 Commit이라고 하는 데 이런 Commit을 하게 되면 자연스럽게 Version이 한 개 생성됩니다. Version이 생성된다라는 것은 해당 시점으로 돌아갈 수 있다는 것을 의미하고, 만약 문제가 생기면 문제가 생기기 이전으로 돌아갈 수 있도록 해주는 것이죠.

 

Q. Git이 형상 관리 도구 중 한 개라고 하고 많이 쓰이는 것 중 한 개라고 하면 다른 방식은 어떤 것이 있나요?

 

 다른 방식으로는 SVN방식이 있습니다. 어디선가 들어본 적 있는 것 같은 SVN 이 방식은 Git과 다르게 중앙 Server에서 모든 문서를 관리하게 됩니다. Git이 여러 컴퓨터에 분산해서 관리하게 되는 것과 다른 것이죠. 

SVN의 방식은 뭘 하나 하려고 해도 중앙 서버에 접속해서 다 해야 하고, 뭐 하나 보고 싶다고 해도 바로 중앙 서버에 들어가서 봐야 합니다. 빠르고 능률적인 작업에는 맞지 않는 것이죠.

그렇다 보니 최근 Git을 많이 사용하는 추세입니다.

 

Q. 그렇다면 Github는 무엇인가요?

 

 

 Github는 Git을 언제나 어디서나 사용할 수 있도록 만들어주는 것이라고 생각하시면 됩니다. 

우리가 컴퓨터를 사용할 때 여러 장치랑 연결을 될 수 있도록 만들어주는 Hub처럼 깃을 언제 어디서든 사용할 수 있도록 만들어주는 것이죠.

 

 Git의 장점을 그대로 가져오고 언제나 어디서나 사용할 수 있도록 만들어준다니 매력적이지 않을 수가 없습니다.

개발자들의 원격 저장소 역할을 할 뿐만 아니라 자신의 코드를 오픈소스로 올리기도 하고 개발자들의 커뮤니티 역할도 하고 있습니다. 

 

 

참고: https://velog.io/@jini_eun/Github-Github%EB%9E%80-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC

 

[Github] Github란? (간단 정리)

안녕하세요 오늘은 제가 매일 사용하는 github가 무엇인지, 어떤 식으로 활용하는지 간략하게 정리해보고자 합니다.매일 이용하지만 정확히 정의가 무엇이고, 어떤 역할을 하는 무엇인지 확실하

velog.io

 

 

반응형

댓글