Git 이란?
Git은 2005년에 리누스 토발즈에 의해 개발된 후로 현재 가장 많이 사용되는 버전 관리 시스템의 대표적인 툴이라고 할 수 있다.
- 버전 관리 시스템 : 파일의 변경사항을 추적할 수 있도록 돕는 시스템
SW개발에서 소스코드의 변경사항을 추적하고 여러 개발자들과 협업하기 위해 분산 버전 관리 시스템인 Git을 주로 사용한다. (중앙집중형 방식으로 사용되는 Subversion같은 툴도 있음)
혼자 개발하는 경우야 상관없지만 여러 사람들과 협업하기 위해서는 반드시 버전 관리 시스템을 사용해야한다. (짤로도 이미 유명한 최종, 진짜최종, 이런식으로 개발할 수는 없으니..)
Git의 특징을 간략하게 언급하자면 각 개발자가 모두 자신의 로컬에 저장소를 가지고 있기 때문에 원격저장소가 망가지더라도 복구가 쉬우며 빠른 속도를 가지고, 네트워크가 불필요하다는 장점이 있다. (원격서버에 push하기 위해선 네트워크가 필요함)
Git과 같은 분산 버전 관리시스템을 사용하면 이전 버전으로 쉽게 돌아가거나 문제가 발생했을때 쉽게 복구가 가능하다.
또한, 누가 어떤 작업을 했는지 쉽게 추적할 수 있기 때문에 협업툴로 최적이라고 할 수 있다.
Git에서 원격저장소(Remote server)에 push하기까지의 구조는 아래와 같다.
특이한 점은 로컬저장소 이전에 stage라는 영역이 있으며, 이는 commit하려는 파일들을 올려놓는 일종의 가상영역이다.
stage영역을 활용하여 작업 내용 중 특정 파일들만 선별하여 commit에 반영할 수 있으며, 이를통해 작업한 내용을 여러개의 commit으로 분할할 수 있다.
그리고 개발 프로세스가 잘 정착되어 있는 회사에서는 원격저장소에 push하기전에 해당 commit이 merge가 되어도 되 안전한 commit인지 확인하는 리뷰과정을 거치는 경우가 많다.
Gerrit, Bitbucket과 같은 코드리뷰 툴을 이용하여 해당 commit이 원격저장소에 merge되어도 괜찮은지 과정을 거치는 것이다.
위의 그림에서 review라고 표시되어 있는 곳에 코드리뷰 툴이 있다고 생각하면 이해하기 쉬울 것 같다.
즉, 개발자는 코드리뷰(혹은 테스트도 병합)에 의해 해당 commit이 충분히 검증되면 원격저장소로 merge되는 프로세스이다.
다음 포스트에서는 다양한 git명령어들을 알아보자.
'Configuration Management' 카테고리의 다른 글
새로 생성한 파일까지 git diff로 patch 생성 (0) | 2020.11.07 |
---|---|
Git (브랜치, 태그) (0) | 2020.11.07 |
Git (설치, 기본 명령어) (0) | 2020.11.07 |
코드 품질 분석기 (0) | 2018.07.01 |
소스코드 시각화 (Call graph) (0) | 2018.07.01 |