여러 개발자가 함께 프로그램을 만드는 프로젝트에서 협업을 할 경우 필수적으로 사용하는 툴입니다.
git은 병렬적인 개발을 가능하게 하는 핵심 툴이기도 합니다. 개인 프로젝트로 개발할 경우에도 Git을 이용하면 효율적인 버전 관리가 가능해지기 때문입니다.
과제나 프로그래밍을 할 때 찐 최종, 마지막 최종과 같은 수식어를 덧붙이며 여러 차례 저장하는 경우가 종종 있습니다. 결국 파일 이름은 '최종완료'와 같은 식이 되어 해당 파일에 어떤 내용이 수정되었는지도 알 수 없게 됩니다.
이렇게 최종이라는 수식어를 달고 만들어지는 수많은 버전의 효율적인 관리를 위해 만들어진 것인 VCS입니다.
VCS는 Version Control System의 약자로 한글로는 버전 관리 시스템이라고 불립니다. 그리고 VCS는 두 가지가 있습니다.
CVCS (Centralized Version Control System)은 원격 저장소에 모든 보전의 파일을 저장해 두고 수정이 필요한 일부 파일만 받아 업데이트하는 방식입니다.
쉽게 설명하자면 파일의 완전체는 원격 저장소에 저장되고 PC에서는 그 일부만 가져와 작업하는 것입니다. 대표적인 프로그램으로는 SVN이 있습니다.
작업할 파일만 가져와 작업하는 방식은 효율적이긴 하지만 원격 저장소에 문제가 발생할 경우 작업 진행이 중단된다는 치명적인 단점이 존재합니다.
DVCS (Distributed Version Control System)은 원격 저장소에 저장해 둔 데이터베이스 전부를 로컬 저장소에 받아 작업하는 방식입니다.
이 방식은 각 로컬 저장소가 원격 저장소의 데이터베이스를 전부 가지고 있기 때문에 원격 저장소에 문제가 생기더라도 작업 진행에 문제가 없으며 오프라인 작업 또한 가능합니다.
CVCS는 문제가 있습니다. 예시로 학교에 모든 자료를 저장하여 학교 컴퓨터에 저장해놓았는데, 학교에 코로나와 독감이 퍼져 건물이 일시 폐쇄가 이뤄진 경우 자료의 일부만 가져간 학생들은 작업을 더 이상 진행하기 힘들게 됩니다. 이와 같은 학교는 원격 저장소, 학생들은 로컬 저장소로 비유할 수 있습니다.
DVCS의 방식은 학생들이 복사해서 집으로 가져가기 때문에 학교에 문제가 생기더라도 작업을 진행하는 데에는 문제가 생기지 않습니다. 이런 강점을 가진 DVCS의 대표주자가 오늘 알아보고 있는 GIT입니다.
버전 관리: 깃을 사용하면 파일의 변경 내역을 추적하고 버전을 관리할 수 있습니다. 이를 통해 과거로 돌아가거나 특정 시점의 코드 상태를 쉽게 복원할 수 있습니다.
협업: 여러 개발자가 동시에 작업할 때 깃을 사용하면 변경 사항을 효율적으로 관리하고 팀원들과 협업할 수 있습니다. 각자의 작업을 브랜치로 분리하고, 변경 사항을 합칠 때 충돌을 방지할 수 있습니다.
백업: 깃을 사용하면 코드를 중앙 서버와 로컬 컴퓨터에 동시에 저장할 수 있어서 중앙 서버에 문제가 발생해도 로컬에서 코드를 복원할 수 있습니다.
테스팅 및 배포: 깃을 사용하면 테스팅과 배포 단계에서도 효율적으로 코드를 관리할 수 있습니다. 각 버전을 태그로 지정하여 특정 버전을 테스트하거나 배포할 수 있습니다.
오픈 소스 기여: 오픈 소스 프로젝트에 기여할 때 깃을 사용하면 다른 개발자들과의 소통과 협업이 편리해집니다. 깃허브(GitHub)와 같은 플랫폼을 통해 소스 코드를 공유하고 관리할 수 있습니다.
지속적 통합 및 배포: 깃을 사용하면 지속적 통합과 배포(CI/CD) 시스템을 구축할 수 있습니다. 변경 사항을 통합하는 과정을 자동화하여 개발 및 배포 프로세스를 더욱 효율적으로 만들 수 있습니다.