형상 관리 도구 깃(Git) 이란 무엇인가? 이론부터 가볍게 구성하기

깃(Git) 이란?

깃(Git) 은 코드, 문서 등의 버전을 관리하는 도구 입니다. 저희가 프로그래밍을 통해 만들어지는 프로젝트는 이런 깃과 같은 도구를 통해 관리 되어지며 자연스럽게 프로젝트의 변경에 대한 백업이 됩니다.

기존 스프링(Spring) 기반 웹 개발을 하셨다면 SVN(Subversion), CVS(Concurrent Versions System) 등의 형상 관리 도구를 사용해 보았을 수도 있는데 깃이 이 도구들과 같은 역할을 합니다.

깃과 같은 도구를 ‘형상 관리 도구’라 하는데 깃의 역할 처럼 소스 코드 변경 이력 추척, 관리 등을 할 수 있게 도와주는 도구들을 말하고 형상 관리 도구는 소프트웨어 개발의 필수적인 요소 입니다.

예로 형상 관리 도구가 없다면 팀 간 프로젝트를 공유할 때, 신입이 와 프로젝트를 인수인계 할 때 등 들고 있는 파일을 모조리 옮겨줘야 하며 서로 개발하면서 변경 된 내역을 수기로 맞춰야 하는 등, 프로젝트의 규모가 커질 수록 이는 불가능 합니다.

그리고 개인이 개발을 할 때도 한 가지 불편한 사항을 해결해 줍니다.

저의 경험을 빌려 말하자면 집에서 개발을 하다가 외부에 나가 개발을 하게 되면 그 때 마다 프로젝트를 통째로 압축해서 NAS 에 파일을 업로드 하고 노트북에서 다시 다운 받아 개발을 하곤 했습니다.

그러다 깜빡 이라도 해 최신 버전을 업로드 해두지 않거나, 프로젝트를 개발/수정 하다 문제가 생겼을 때 백업이 되어 있지 않아 다시 작성해 가며 고쳐야 하는 경우도 있습니다.

깃과 같은 형상 관리 도구를 사용하면 이런 점에서 벗어날 수 있게 되죠.

Git (git-scm.com)

깃(Git) 공식 사이트 캡처

깃(Git)의 종류

위에선 막 아는 척을 했지만 사실 저는 SVN 만 주로 쓰고 있고 깃(Git) 은 안 써봤습니다 ㅎ.

그래서 이번 Node.js 프로젝트를 공부하는 김에 깃을 쓰려는 거구요.

그런데 깃에 대해 검색해 보니 생각보다 많은 종류와 자료가 있더군요. 깃 자체는 아니지만 깃을 기반으로 발전한 여러 서비스, 소프트웨어가 있으며 개발자 들은 취사 선택해 이용하고 있습니다.

그래서 이 섹션에선 깃의 종류를 한번 정리 해보려구요. 👍

깃허브(GitHub)

깃허브(GitHub)는 깃을 기반으로 만든 웹 기반 호스팅 서비스 입니다.

형상 관리 뿐만 아니라 각종 코드, 라이브러리, 소프트웨어가 공유 되는 하나의 커뮤니티 혹은 플랫폼 입니다.

깃허브를 이용하면 사용자는 로컬 시스템에 깃(Git) 레포지터리를 설치하고 깃허브 내의 원격 레포지터리를 연결하여 관리하게 됩니다.

그래서 별도의 서버를 지니지 않는 학생, 취업 준비생, 개인 공부 등의 용도로 사용하여 무료로 공개할 소스 코드 등의 프로젝트에 깃허브를 사용하는 것도 좋습니다.

다만, 기업에서 사용할 땐 여러 주의점이 발생할 수 있는데 첫 번째로 깃허브를 사용하기 위해 외부 네트워크와 연결을 할 경우 이는 내부망 혹은 네트워크 관리를 엄격하게 관리하는 기업 환경에서 사용이 어렵거나 금지하는 경우가 많습니다.

이를 위해 깃허브에선 기업용 서비스(GitHub Enterprise) 를 제공하여 온프레미스(내부 서버에 설치), 기업용 클라우드 서비스로 운영할 수 있게 설정이 가능합니다. 이런 점을 잘 인지하여 깃허브의 사용을 결정하는 것이 좋습니다.

또한, 온라인에 코드를 업로드 하는 것인 만큼 언제나 보안 문제에 직면할 수 있습니다.

이를 위해 깃허브는 다양한 보안 기능(예: 두 요소 인증, 자동 취약점 검사 등)을 제공하고 있으나, 언제나 완벽할 수 없습니다. 구글 검색에서 이와 관련 된 수많은 기사를 확인 할 수 있습니다.

깃허브 보안 유출 기사

그리고 또 가장 중요한 문제! 팀/기업 수준에서 사업 용으로 사용하려면 유료 요금제를 결제 해야 됩니다! 😯😯😯. 돈 만큼 중요한 사항은 없죠~~

깃랩(GitLab)

깃랩(GitLab)은 깃을 기반으로 하는 DevOps 플랫폼 입니다.

DevOps 라니… 또 새로운 용어가 나왔네요! 이는 Devleopment(개발)와 Operations(운영)의 합성어로 개발과 운영에 이르기 까지의 모든 과정을 한 싸이클 보고 이를 자동화 하는 것입니다.

그래서 깃랩은 이런 DevOps 를 위한 여러가지 기능이 제공 되어 있어 코드 통합, 테스트, 배포 과정을 자동화 할 수 있게 해줍니다.

그리고 무엇보다 위의 깃허브와의 차이점은 오픈 소스 버전(Community Edition)을 제공하고 있고 자체 서버에 설치해서 사용할 수 있습니다.

기업 내에서도 무.료. 로 사용할 수 있죠. 👍

비트버킷(Bitbucket)

비트버킷(Bitbucket)은 다소 생소한 용어 입니다.

소프트웨어 개발 프로젝트 관리 도구 Jira 로 유명한 Atlassian 사에서 제공하는 깃 기반의 형상 관리 협업 플랫폼 입니다.

위의 깃허브, 깃랩과 유사한 기능을 제공하며 자사의 소프트웨어 Jira, Confluence 등의 제품들과 통합되어 있습니다.

Gitea

Gitea 는 깃(Git) 을 기반으로 경량화에 중점을 둔 형상 관리 플랫폼 입니다.

깃허브(GitHub)와 유사한 기능을 제공하고 가볍고 빠른 속도로 인해 작은 팀이나 개인 프로젝트에 적합합니다.

깃크라켄(GitKraKen) or 기트크라켄

비트버킷(Bitbucket)과 같이 아주 생소한 용어로 한번 정리해 보도록 하겠습니다.

위의 도구들이 원격, 로컬 저장소 환경의 기능을 강력하게 제공 하는 플랫폼들 입니다.

기트크라켄(GitKraKen)은 위의 깃허브, 깃랩, 비트버킷의 원격 저장소 서비스와 연결하여 사용하기 위한 클라이언트 애플리케이션 입니다.

특징으론 다른 깃 클라이언트 앱이 명령줄(Command Line)으로 명령어를 입력해 가며 형상 관리 할 때 사용자에 친화적인 그래픽 사용자 인터페이스(GUI)를 통해 보다 시각화, 효율적으로 사용할 수 있게 해줍니다.

깃(Git)의 가장 큰 특징 브랜치(branch)

브랜치(branch)는 형상 관리 도구에서 메인 소스 코드를 기반으로 여러 새로운 개발 공간을 생성해 여러 개발자가 동시에 개발을 진행할 수 있도록 제공되는 기능 입니다.

그 중 깃(Git)은 다른 형상 관리 도구보다 브랜치 기능이 매우 효율적이란 평가를 받고 있습니다. 그 이유는 바로 깃의 브랜치와 관련 된 포인터(Pointer)와 스냅샷(Snapshot) 덕분 인데요. 이에 대해 깃(Git)의 브랜치(branch)가 특별한 이유에 대하여 포스팅으로 정리해 보았습니다.

깃(Git) 다운로드 및 설치하기

깃(Git)은 다운로드 공식 홈페이지 에서 다운로드 후 설치해 주시면 됩니다. 저의 경우 Windows 환경에서 설치해 보았습니다.

깃 다운로드 공식 홈페이지

설치 시엔 설정 변경 없이 전부 Next를 눌러 진행 하였습니다.

설치 이미지 보기

깃(Git) VSCode 연결 및 프로젝트 Commit 하기

Commit 수행

저의 경우 현재 VSCode 를 통해 Node.js 기반 프로젝트를 생성하고 개발하고 있습니다. 해당 프로젝트를 깃(Git)과 연결하여 Commit 하는 과정은 Visual Studio Code(VSCode)에 깃(Git) 환경 구성, 연동하기에 상세하게 작성 하였습니다.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
목차
위로 스크롤