Git은 Linus Torvalds에 의해 고안된 VCS(Version Control System)으로 소스코드의 변경 내역을 관리하는 시스템임
버전 관리 시스템의 필요성
- 코드 변경 사항 내역 기록 및 관리
- 필요시에는 이전 상태로 rollback
- 팀단위 개발시 체계적이고 효과적인 협업 가능
버전을 관리하기 위해서는 같은 디렉토리 내에 파일을 복사하여 관리를 하면 되나, 실수가 발생할 가능성이 아주 많음(파일명, 착각 등)
이를 해결하기 위해서는 수정된 버전 파일을 같은 공간이 아닌 다른 공간에 저장 후 관리
그러나 이럴 경우, 다른 개발자와의 협업을 진행하여 수정사항을 공유하고 관리하기에는 제약이 발생하고 있음
그러나, 이럴 경우에도 중앙 서버가 다운되면 개발팀 전체가 마비되는 현상이 발생하고, 복구가 되지 않으면 소스코드 전체가 소멸되는 현상이 발생
Modified : 말 그대로 수정된 File
Staged : Commit전 mark해 놓은 상태로, 중간 저장 단계
Commited : 수정 사항들이 git에 저장된 상태
git init : 프로젝트를 git repositoty(저장소)로 만들기 위해 사용하는 명령어로 해당 디렉토리를 git repo로 만들어야 버전 관리가 시작됨
git add : modified된 파일을 staged 상태로 옮기고자 할 때 사용하는 명령어
git commit : staged된 파일을 commit하고자 할 때 사용하는 명령어
git diff : Modified된 파일에 어떤 수정 사항이 적용되었는지 보고자 할 때 사용하는 명령어
git status : 현재 상태를 보여주는 명령어로 파일의 전체적인 상황을 보여줌
git log : commit 내역을 보여줌
git rm : 원하는 파일을 git repo에서 삭제
git branch : Branch를 생성할 때 사용
git checkout : 다른 branch로 이동하고자 할 때 사용
(출처 : https://gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html)
브랜치의 종류
Master Branch
Develop Branch
Feature branch
Flow
- 'develop' 브랜치에서 새로운 기능에 대한 feature 브랜치 분기
- 새로운 기능에 대한 작업 수행
- 작업이 끝나면 'develop' 브랜치로 merge
- 더 이상 필요하지 않은 feature 브랜치 삭제
- 새로운 기능에 대한 'feature' 브랜치를 github에 push