Git?
Git은 자신의 코드와 그 수정 내역을 기록하고 관리하도록 돕는 '버전 관리 프로그램'이며, 로컬에서 프로젝트의 기록을 스스로 관리할 수 있도록 해준다. Git을 통해 Branch를 생성하고 이전 Branch로 복구, 삭제, 병합이 가능하다. 하지만 로컬 저장소를 사용하기 때문에 프로젝트에 참여하고 있는 다른 개발자와 실시간 소통 & 공유는 불가능하다. 즉, Git은 다음과 같은 특징을 가지고 있다.
- 오픈소스 버전 관리 시스템(VCS: Version Control System) / 분산소스 버전 관리 시스템
- 로컬에서 버전 관리 / 서버를 분산시켜 구축할 수 있게 하는 소프트웨어
- 소프트웨어 개발 및 소스코드 관리에 사용 / 효율적으로 소스코드를 관리할 수 있게 해주는 도구
Github?
Github는 Git의 저장소를 관리하는 클라우드 기반 호스팅 서비스이다. Git 저장소 호스팅 서비스는 클라우드 기반으로, 다른 사람과 소스코드 공유가 가능하며 Git의 기본적인 기능을 확장해서 제공한다. 또한 클라우드 서버에 소스를 올리기 때문에 한 프로젝트에 여러명의 사람들이 참여하여 버전 제어 및 공동 작업이 가능하다. 즉, Github는 다음과 같은 특징을 가지고 있다.
- Git Repository를 위한 웹 기반 호스팅 서비스
- 클라우드 서버를 사용해서 로컬에서 버전 관리한 소스코드를 업로드하여 공유 가능
- 분산 버전 제어, 액세스 제어, 소스코드 관리, 버그 추적, 기능 요청 및 작업 관리를 제공
버전관리?
하나의 소스 혹은 여러개의 소스 묶음을 하나의 버전으로 간주한다. 여기에 들어있는 파일이나 폴더를 추가, 수정, 삭제를 하는 등 사람이 직접 관리한다. 이는 원할 때 예전 버전 내용 전체를 되돌려 볼 수 있고 복잡한 코드를 개발할 때 이전 버전과 비교하기 수월하다는 장점이 있다.
버전관리는 개발자들 간의 협업에 꼭 필요하다. 왜냐하면 전체 개발 소스를 공유하면서 개발 파트를 나눌 수 있고, 같은 모듈을 개발하더라도 소스를 서로 공유하며 개발할 수 있기 때문이다.
Git의 주요 개념들
- merge: 한 Branch에서 완성한 작업을 다른 Branch에 병합
- tag: 특정 이력을 가지는 commit에 대한 참조
- pull request: 완료한 작업을 다른 사람이 리뷰하고 병합하도록 요청
- issue: 기능에 대한 논의, 버그 추적하기
- wiki: 링크들을 연결해 웹 페이지 만들기
- push: 내 로컬 컴퓨터에 저장되어 있는 버전정보를 Git 저장소(서버)에 올리기
- pull: Git 저장소(서버)로부터 내 로컬 컴퓨터로 버전 정보 전체를 가져오기
- commit: Git(로컬 저장소)에 파일을 추가하거나 변경내용을 저장하는 작업
Git에서 Branch는 버전들을 묶어서 Branch라고 부른다. 내 컴퓨터에 있는 Branch는 로컬 브랜치, 외부 서버에 있는 Branch는 리모트 브랜치라고 한다.