깃은 소스코드의 버전 관리 시스템입니다.
깃의 핵심 기능은 버전 관리, 백업, 협업
이 세가지에 있습니다.
깃은 리누스 토발즈가 최초로 고안하여
커널 개발자들과 함께 만들었습니다.
그는 리눅스 코드를 개발하면서
수만 라인의 소스 코드와 수천개의 파일을
관리하는데 어려움을 겪었는데
깃을 소개할 때 지옥에서 온 관리자라고
말할 정도로 획기적인 시스템입니다.
지금은 오픈소스 커뮤니티의 표준으로
자리잡고 있습니다. 오픈소스라 하더라도
상업 소프트웨어 회사들이 다 사용하기 때문에
결국은 오늘날 전세계 코드 관리 시스템의
표준이라고 해도 과언이 아닙니다.
버전 관리 시스템에는 깃 말고도
여러 종류가 있습니다.
깃 CLI(커맨드 라인 인터페이스) 클라이언트를 설치합니다.
윈도우에서는 Chocolatey 로 설치할 수 있습니다.
Chocolatey Software | Git (Install) 2.35.1.2
choco install git.install
Chocolatey는 윈도우 패키지 매니저로
설치는 아래 링크를 참고 합니다.
GUI 깃 클라이언트인 깃허브 데스크탑 을
설치해서 사용해도 됩니다.
다만 데스크탑은 명령어적인 한계가 있어서
여기서는 CLI용 깃을 설치합니다.
git 을 설치한 후 git --version 으로 확인합니다.
환경변수가 새로 등록되서 터미널을
다시 실행해야 할 수도 있습니다.
깃은 로컬 컴퓨터의 버전관리 앱이고
깃허브는 깃의 온라인 Repository 서비스입니다.
깃허브를 중심으로 온라인에서 여러 사람이
소프트웨어의 버전 관리 시스템에 참여할 수 있습니다.
깃은 깃 허브에 독립적이기 때문에
다른 저장소와 연결해서도 사용가능합니다.
AWS CodeCommit 등 서비스에서
git 을 사용할 수 있습니다.
깃과 깃 허브는 클라이언트 - 서버
모델이기도 합니다. 깃 서버를 직접
구축하는 것도 가능합니다.
하나의 소스코드에 여러사람이 작업할 때의
문제는 누가 언제 무엇을 어떻게 했느냐?
라는 부분이 있습니다. 예를 들어 1000줄의 서버코드에
10 사람이 각각 100줄 씩 유지보수를 담당합니다.
(실제 이렇지는 않지만 단순화한 예로)
한달이 지나서 보니 각자 많은 수정을 했습니다.
자기 코드를 수정할 때 dependency(의존성)가 있는
라이브러리, 클래스 등이 조금씩 변경되기도 하는데
처음에는 잘 동작하던 서버가 점차 느려지더니
오류도 많아지고 급기야 다운되기도 합니다.
생각해 보니 처음에는 잘 작동을 했습니다.
그렇다면 다시 돌아갈 필요가 있습니다.
그런데 각자가 이미 너무 많은 수정을 해버려서
처음으로 돌아갈 수가 없습니다. 프로그램을
다시 짜야 합니다. 이것이 1000줄이라고 해도
머리가 아픈데 1만줄에 수백개의 파일이라고 하면
시스템 없이는 관리가 안됩니다.
오늘날 리눅스 커널의 소스를 다운로드하면
압축 파일의 용량이 234메가에 4912개 폴더
75027개의 파일이 있습니다.
2020년 기준으로 리눅스 커널의 코드는
2,780만 라인이라고 하는데 리누스와
커널 개발자들이 깃 허브에서 관리하고 있습니다.
과거엔 개발자 혼자서 어셈블리어로
프로그램을 만들던 시절이 있었습니다.
그때는 깃허브 같은게 필요가 없었지요.
그런데 IT기술이 발달하고 규모가
점점 커져서 여러 사람이 참여하는
오늘날의 프로젝트에는 버전 관리 시스템이
선택이 아닌 필수적입니다.
깃은 소스코드를 관리하기 위해 개발됬지만
소스코드는 곧 텍스트 파일이라서
텍스트 파일의 문서 관리시스템 이기도 합니다.
실제로 다양한 버전의 문서를 관리하는
조직에서 깃을 사용하는 경우도 있습니다.
컴퓨터 프로그래머가 아니더라도
깃을 활용하여 전문적인 문서 관리가 가능합니다.
깃 CLI를 로컬 컴퓨터에 설치해도
깃 저장소와는 독립되어 있습니다.
깃허브에 가입하여 백업을 하고
여러 사람과 협업이 가능합니다.
또 깃 허브의 프로젝트에 참여함으로써
오픈 소스 커뮤니티에 기여할 수 있습니다.
한발자국 더 나아가서 깃 허브에서 직접
오픈 소스 프로젝트를 시작할 수도 있습니다.
개인은 무료로 가입하여 500메가의 저장소와
2000 분의 CI/CD (그룹 작업시 사용)를
사용할 수 있습니다.
다음의 사이트에서 가입합니다.
우측 상단 메뉴 sign up 을 클릭하여
이메일과 패스워드 사용자명 등 간단한
절차를 거치면 바로 가입이 됩니다.
Free 플랜으로 시작하면 됩니다.
프로필로 이동하면 현황을 볼 수 있습니다.
지금 막 생성한 계정이라 아무것도 없습니다.
깃과 깃허브를 연동해서 사용하는 것은
다른 포스팅에서 알아보도록 하고
여기서는 git gist 를 사용해보고
마무리를 하겠습니다.
깃허브에는 깃과 연동하는 것 뿐만 아니라
여러가지 편리한 기능이 있는데 깃 지스트는
간단한 코드 조각을 공유할 때 사용합니다.
깃 허브라고 하면 너무 풀 프로젝트의
공유같이 무겁게 느껴지는데요, 간단한
코드 조각을 공유하는 기능이 Gist 입니다.
다트(dart) 파일을 하나 만들어 봅니다.
파일을 여러개 추가할 수 있습니다.
gist를 만드는 것은 Create secret gist와
Create public gist 가 있는데
secret 은 URL을 알려주면 누구나
볼 수 있고 public 은 검색엔진에 노출됩니다.
구글에 코드를 검색하다 보면 가끔 git gist가
나오는데 public gist기 때문입니다.
로컬 클라이언트로 Clone 해보겠습니다.
아래처럼 HTTPS로 바꿔놓고,
URL 복사 후 터미널에서 git clone 옵션으로
소스 파일을 가져올 수 있습니다.
git clone https://gist.github.com/2bf8e1482047684b285e25d7231e6b0e.git
단순히 링크를 가져올 수도 있고
https://gist.github.com/jayonk/2bf8e1482047684b285e25d7231e6b0e
티스토리에 임베드도 가능합니다.
SSH 키를 통한 클론도 가능합니다.
(공개키를 생성하고 깃허브에 등록해야함)
dart pad를 사용하면 온라인 ide에서
바로 코드를 실행시킬 수도 있습니다.
아래처럼 ?id=지스트의 아이디(뒤에 나오는 문자조합)
로 접속하면 DartPad에 코드가 전달됩니다.
https://www.dartpad.dev/?id=2bf8e1482047684b285e25d7231e6b0e
*참고
Top 5 BEST Version Control Software (Source Code Management Tools) (softwaretestinghelp.com)