깃(Git)이란
버전 관리 시스템(VCS: Version Control System)으로 소프트웨어의 시간 및 버전을 관리하고 통제하는 시스템을 말함.
프로젝트의 변경 내역, 프로젝트 버전 등을 쉽게 관리해주는 프로그램
problem: 일정 단위의 작업을 취소하고 이전 버전으로 되돌려야 할 때
solution: 버전 관리 시스템으로 버전을 저장, 되돌리기, 각각 작업의 진행 등을 기록해 체계적 관리 가능
Git: 오늘날 가장 인기있는 버전 관리 시스템.
- 프로젝트를 버전별로 백업, 관리하여 프로젝트를 유지보수 하면서 발생할 수 있는 여러 문제들을 미연에 방지하고 해결하는 역할을 함.
Github: Git을 기반으로 소스코드를 온라인에 저장하고, 공유할 수 있게 하는 소스코드 관리 서비스
용어 정리
- 레포지터리(Repository, repo): 저장소. sw 파일이나 폴더 등 각종 정보 저장. 깃허브를 통해 공개/비공개 레포 만들 수 있음
- 브랜치(branch): 독립적으로 어떤 작업을 진행하기 위한 ‘차원’ 하나의 폴더 안에서 여러 차원을 분기할 수 있음. 각각의 브랜치는 독립적, 여러 작업 동시 진행 가능 따라서 새로운 기능을 추가하고자 할 때 새로운 브랜치에서 기능테스트 가능.
- 커밋(commit): 코드 수정사항을 기록하는 명령. 커밋 생성하면 커밋한 시점의 작업 변경 이력을 저장할 수 있음. 내 컴퓨터에서 수정한 코드를 깃헙 레포로 올리기 전에 포장하는 작업
- PR(Pull Request): 수정한 코드가 있는 브랜치를 검토 후 병합해달라 요청하는 것 원격 저장소에 모두 커밋한 뒤 팀원들에게 PR 보냄 → 다른 개발자들이 확인 후 문제없을 시 PR승인, main 브랜치에 병합 → 코드 충돌 최소화 가능
- 코드 리뷰(code review): 다른 개발자의 코드 내용을 점검하고, 피드백을 주는 것
- 피드백: 오타, 버그 가능성, 개발 표준 등에 대한 의견 or 좋은 코드에 대한 긍정적인 피드백
- 장점: 버그의 조기 발견, 개발 표준 준수, 코드 중복 방지, 모듈 재사용성 증대, 좋은 코드에 대한 논의 등을 할 수 있음 이를 통해 개발자 개인에게만 책임을 묻는 것이 아닌, 모두에게 책임이 있다는 문화 만듦.
- 오픈소스(open source software): 공개적으로 접근할 수 있게 설계되어 누구나 자유롭게 확인, 수정, 배포 가능한 코드. 깃헙에 오픈소스 플젝 업로드 하여 다른 개발자들과 공유가능함. 동료 평가와 커뮤니티 기반 프로덕션에 의지하며 협업 방식으로 개발, 유지보수가 됨.
형상관리도구, 즉 버전관리 시스템 중 하나. 프로젝트의 소스코드를 효과적으로 관리할 수 있는 시스템.
⬇️ 효과적인 관리란?
Git의 특징임.
여러 명이 동시에 작업하더라도 문제 없도록 함
소프트웨어의 여러 버전을 동시에 관리할 수 있다
프로젝트 진행의 모든 로그를 볼 수 있고, 해당 시점으로 되돌리는 것도 가능.
git-scm.com
** 사용법을 정확히 알고 싶거나 추가적으로 알고 싶은 부분이 있을 때, Documentation → Reference Manual에서 찾아보면 됨.
Git을 사용하는 이유
코드 관리 측면
- 변경된 이력 확인
- 이전 이력으로 되돌리기
- 다른 기능의 버전 코드 유지
- 현재 최종이 어느 시점인지 표현할 수 있음.(로그)
협업의 측면
- 분업 가능. 각자 하고 추후 합칠 수 있음.
- 같은 부분을 수정해 문제가 생길 때 안내해줌
- 협업으로 인한 실수를 예방
- 팀원 간 커뮤니케이션을 지원
Git 기반의 서비스
프로젝트 소스코드 클라우드 호스팅, 특색에 맞는 기능을 제공
- Github
- Bitbucket
- 협업을 위한 소프트웨어(Jira)와 연계가 잘 됨
- GitLab
- 설치형 Git
- 용량에 대한 비용을 절감
- 소스코드의 보안이 좋음