형상 관리 도구 중 하나로, 대형 프로젝트를 효율적으로 관리할 수 있게 해주는 무료 소프트웨어이다.
여러 명이 branch를 만들어 merge가 가능하기 때문에 동시 다발적으로 병렬 개발이 가능하다.
분산 버전관리이기 대문에 인터넷이 연결되지 않은 곳에서 개발을 진행할 수 있으며, 저장소가 날라가도 다시 원상복구 가능하다.
Git은 병렬적 브랜치 관리전략을 사용하기 때문에 브랜치를 생성하고 삭제하는 것이 쉽다.
아래의 그림은 Git-Flow Workflow를 시각화한 그림이다.
(출처: https://expressus.io/diagrams/git-flow-workflow-diagram-template)
Master: 처음 생성하면 Master로 생성되는데, Master라는 것은 언제든지 Release가 가능한 상태를 뜻한다. 즉, 수정하고 있는 코드 들은 브랜치를 만들어 작업을 해야한다. ❗❗
Hotfix: Master 브랜치에서 파생된 브랜치이다. Master에서 오류, 버그가 발견되었을 때 Master에서 브랜치를 생성한 후, 오류, 버그를 수정한 다음에 다시 Master에 Merge를 한다. 즉, 쉽게 말해 폴더라고 생각하면 된다.
Release: Develop 브랜치에서 파생되어 관리를 하고, 향후 Develop 브랜치로 Merge 한다.
Develop: 실제로 개발을 하는 브랜치로, 대부분 작업 과정은 Develop에서 바로 Master로 가지 않고 Release를 거쳐서 Master로 Merge한다.
Feature: 부수적인 기능, 새로운 기능을 추가할 때 개발하는 브랜치로, 개발이 끝나면 Develop에 Merge 된다. 그런데, Feature 브랜치는 하나의 브랜치가 아닌 폴더의 형태다.
Why? 협업하는 경우는 여러 사람이 여러 기능을 개발할 경우도 있기 때문이다.
오늘 git을 처음 살펴보았는데 왜 많은 사람들이 git! git! 하는지 알게됐다.. 왜 이렇게 편한걸 우리 연구실에서는 사용하지 않았을까??😒 서로 버전도 다르고 코드 스타일도 달라서 코드를 합칠때 엄청 고생했던 기억이 떠올랐다..😢 그때 git을 쓰고 있었다면 어땠을까??ㅠㅠ 지금부터라도 나중에 팀원들과 협업할 때 그리고 나를 위해서 git을 습관화 하도록 공부 열심히 해야겠다.❗❗