
1. 깃(Git)이란?
- 형상 관리 도구(Configuration Management Tool)이면서 분산 버전 관리 시스템(Distributed Vesrion Control System, DVCS)의 한 종류.
- 쉽게 말하면, 프로그램의 소스 및 파일의 변경 사항을 추적하면서 관리하며(→ 형상 관리 도구) 동시에 프로그램의 소스 및 파일을 여러 곳(개발에 참여하는 PC, 저장소 등)에 분산해서 저장해 관리하는 툴로, 프로그램의 버전 관리 및 협업에 편리함을 제공해준다.
- 한마디로 깃이란 프로그램 소스 및 파일의 이력을 분산으로 관리하는 툴로 프로그램의 버전 관리 및 협업에 이용된다.
2. 깃(GIT)은 왜 필요할까?
- (상황1)
오랜만에 뜯어본 코드에서 내가 개발했던 기능의 코드가 어느 순간 수정이 되어있었다.
→ 누가 언제 어떤 이유로 코들 수정했는지에 관한 메모 또는 주석이 남아있지 않았다.
→ 심지어 오래된 코드라 내가 짠게 이 코든지 저 코든지 모르겠다.
이때, 깃이 없으면?
⇒ 누가 언제 어떤 코드를 수정했는지 모르는 채로 넘어가게 된다. 😥 - (상황 2)
우여곡절 끝에 댓글 기능을 모두 개발하였다. 댓글에는 프로필 사진과 첨부 파일 업로드 기능이 포함되어 있다.
→ 고객사측에서 유저들의 프사 대신 유저의 등급 이미지를 표시해달라고 수정을 요청해 프사를 지우고 등급을 표시했다.
→ 고객사측에서 첨부 파일에서 미리보기 기능을 빼달라고 해 기존의 미리보기 기능을 삭제했다.
→ 고객사측에서 회의를 거쳐 가장 처음의 모습이 낫다는 결론이 나와 가장 처음의 모습으로 바꿔달라 요청했다.
이때, 깃이 없으면?
⇒ 프로필 사진 기능과 첨부 파일 미리 보기 기능을 다시 짜야된다.😥 - (상황 3)
동기와 내가 같은 페이지 내에서 다른 기능을 맡아 개발을 시작했다. 나는 댓글 기능을 동기는 상세 페이지 기능을 맡았다.
→ 둘이 동시에 기존 소스 파일을 내려받아 작업을 진행했다.
→ 내가 댓글 기능을 완성해 소스 파일을 업로드했다.
→ 내가 업로드 한 것을 모르는 동기가 자신의 파일을 업로드 했다.
이때, 깃이 없으면?
⇒ 번거롭게 계속해서 최신 소스인지 확인해 소스를 업데이트 해야하며, 누락되거나 충돌나는 소스들도 생겨난다. 😥
예시를 통해서 본 깃은 아래와 같은 이유로 필요합니다.
1. 소스의 작성, 수정, 삭제 이력을 확인하여 내 소스 코드의 버전을 관리 할 수 있으며, (버전 관리)
2. 자료가 유실되어 처음이나 위의 상황과 같이 특정 시점으로 백업이 가능해지며, (백업 기능)
3. 여럿이서 동시에 프로그램에 코드에 접근해 작업 할 수 있다. (협업)
3. 깃(Git)의 장점
- 깃은 모든 변경 사항에 대한 '스냅샷'을 찍어 저장하기 때문에 어떤 데이터도 누락없이 소스 코드를 관리 할 수 있다.
- 깃은 분산 버전 관리 시스템으로, 인터넷 연결이 되지 않는 곳에서도 개발을 진행할 수 있으며 중앙 저장소가 삭제되어도 원상 복구 가능하다.
- 깃은 개발자 스스로의 commit history를 가지며 저장소 역시 독립적으로 관리가 가능하기 때문에, commit에 오류가 존재하더라도 서버에 바로 영향이 끼치지 않는다. 개발자가 원하는 순간에 서버에 변경 내역을 보낼 수 있기 때문에 유연한 방식으로 코드를 관리 할 수 있다.
- 브랜치를 통해 분기하고 후에 본 프로그램에 합치는 방식으로 한 기능을 독립적으로 실험 또는 시험이 가능하다.
- 깃은 자동적으로 변경 사항을 병합해주기 때문에 여러 개발자들이 소스 코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능하다.
- 프로그램이나 패치를 배포하는 과정도 간단해진다.
4. 깃헙(Github)이란?
- 분산 버전 관리 시스템인 깃을 사용하는 프로젝트를 지원하는 웹 호스팅 서비스
- 쉽게 말해 깃은 버전 관리를 위한 소프트웨어이며, 깃헙은 깃을 통해 원격 전송되는 파일들을 저장하는 저장소를 제공하는 서비스이다.
- 깃헙은 저장소 관리 기능 뿐만 아니라 위키, 이슈 관리, 머지 요청 관리, 팀원 관리 등 전반적인 프로젝트 관리 기능도 함께 제공한다.
- 이와 같은 서비스로는 Gitlab, Bitbucket 등이 있다. 그 중 Github이 가장 많이 이용되며 Gitlab은 기업체에서 인트라넷에 설치하여 많이 사용한다.
- 깃헙에 public으로 올라온 코드들은 누구나 다 다운받아 이용할 수 있기 때문에 깃헙은 단순히 코드들을 백업하고 관리하는 것을 넘어서 오픈소스 공유 플랫폼의 역할을 한다.