소스코드를 관리하거나 버전을 관리하기 위한 시스템, 소프트웨어 공학에서는 형상관리 도구에 포함된다고 할 수 있다.
VCS( Version Control System, 버전관리 시스템 )
SCM( Source Code Management, 소스코드 관리 ) < SCM( Software Configuration Management, 형상관리 )
당장 현실로 느껴지는 것은 stackoverflow 설문조사에서 볼 수 있듯이 개발을 직업으로 가지면 git을 사용할 줄 알아야 된다는 것입니다.
(회사에서는 git을 사용해서 협업하고 있는데 제가 사용할 줄 모르면 원활한 협업이 힘들겠죠? "📨팀장님: 탕비실 ... go?")
개인이 개발하더라도 git의 특징과 장점이 있기 때문에 사용하는 것이 (정신건강에) 좋다고 생각합니다.
발표자료_최종 -> 발표자료_최종_수정 -> ... -> 발표자료_진짜_진짜_최종_수정2 -> ... 언제까지?? 이 많은 파일들을 다 가지고 있어야 되나? ㅠㅠ
git을 사용하면 위와 같은 고민을 하지 않아도 됩니다.
파일 단위가 아니라 라인 단위로 추적하기 때문에 관련된 파일을 다 기록하거나 기억할 필요가 없다는 것입니다.
비유를 들면, 조별 과제를 한다고 하였을 때
팀장님이 usb를 팀원들에게 개별적으로 나눠 줌
=> 팀원들이 작업해서 팀장님에게 usb를 전달
=> 팀장님은 모든 usb를 연결해서 각각 확인
(소스코드 주고 받기)
=> 팀장님은 원하는 내용을 복사 붙여넣기하여 최종 결과물을 파일에 반영
(배포)
=> 반영된 파일을 usb에 저장하고 다시 작업할 때 팀원들에게 다시 usb를 전달
(소스코드 주고 받기, 기능 개발)
=> ... (반복)
기능 구현하고 하나의 버전으로 배포하는 과정이라고 볼 수 있는데, 이를 위해 번거로운 과정(비효율적)을 거치고 있다는 생각이 들지 않으시나요?
Git Objects