안녕하세요. 오늘은 Git에 대해서 살펴보겠습니다.
Git을 살펴보기 전에, 버전관리에 대해서 위키백과에서 찾아보면 아래와 같은 정의를 볼수가 있습니다.
버전 관리(version control, revision control), 소스 관리(source control), 소스 코드 관리(source code management, SCM)란 동일한 정보에 대한 여러 버전을 관리하는 것을 말한다. 공학과 소프트웨어 개발에서 팀 단위로 개발 중인 소스 코드나, 청사진 같은 설계도 등의 디지털 문서를 관리하는데 사용된다. 그러한 문서의 변경 사항들에 숫자나 문자로 이뤄진 ("개정판 번호"나 "개정판 레벨"이라고도 불리는) "버전"을 부여해서 구분한다. "버전"을 통해서 시간적으로 변경 사항과 그 변경 사항을 작성한 작업자를 추적할 수 있다. 간단한 버전 관리 방법으로는 처음 작성한 코드에 버전 번호 1을 부여한다. 변경 사항이 생기면, 버전 번호를 2로 증가시킨다. 이처럼 추후 변경 사항이 발생 시마다 버전 번호를 1씩 증가시킨다.
소프트웨어 엔지니어링에서는 일반적인 소프트웨어 소스 코드만을 관리하는 내역을 주로 버전 관리라고 정의하게 된다. 일반적으로 산업 공학이나 이전 생산 기반 제조 공학 등에서 소프트웨어 쪽으로 넘어오는 학문적 관심에 의해 이전 생산 공학에서 사용하던 개념을 가져오게 되었고, 그에따라 버전 관리(Software Version Management)와 형상 관리(Software Configuration Management)의 개념들이 따라왔다고 볼 수 있겠다.
한국의 경우, 대부분의 서적들이 일본어를 거쳐 중역(重譯)되면서 오역된 경우가 많고 관련된 분야에 대해 정확하거나 깊은 이해 없이 단순 소개하며 넘어간 경우가 대부분이라 아직도 정확한 버전 관리와 형상 관리의 구분이나 이해가 없다고 보는 것이 맞다.
버전 관리 소프트웨어 도구들은 거의 모든 소프트웨어 개발 프로젝트에서 필수적인 요소로 인식되고 있다.
버전관리는 이정도로 알아보고, 버전관리시스템(Version Control System)은 개발자라면 누구나다 한번쯤은 사용해보았고 지금도 프로젝트 중이라면 사용하고 있을정도로 개발팀에 있어서는 꼭 필요한 시스템이라고 할 수 있습니다.
우리가 흔히 알고 있는 SVN, CVS, Git도 모두 버젼관리 시스템이라고 할 수 있습니다.
버젼관리 시스템은 사본생성, 보존, 복원을 손쉽게 해줄 수 있는 도구이며 여러사람들과 협업으로 프로그램을 개발할 때 상호간의 상태를 동일하게 유지하는 기능을 담당하고 있다고 생각하면 됩니다.
오늘 알아볼 Git은 분산관리 시스템이며, 2005년 리눅스 커널 개발자인 리누스 토발쯔에 의해서 개발되었습니다.
Git이 개발된 일화는 아주 유명한데, 2002년 리눅스 커널을 관리하기 위해 BitKeeper라는 분산 버전 관리 시스템을 도입하여 사용하였는데, 2005년 BitKeeper가 더이상 무료로 사용하는것에 대해서 거부감을 보이면서 이에 빡친(?) 토발쯔가 단 2주만에 리눅스 커널 버전을 관리하가 위한 Git을 개발하게 됩니다.
Git은 완전한 분산환경에서 간단하고 빠르게 수백~수천개의 동시 다발적인 브랜치 작업을 수행하는 것을 목표로 하고 있으며, 리눅스 커널 같은 대형 프로젝트의 버전 관리를 가능하게 하는 것을 목표로 개발되었습니다.
Git의 가장 큰 장점으로는
1. 전 세계 다수의 개발자가 사용하고 있다는 점
2. git을 사용한 저장소를 공유 사이트인 GitHub 웹 사이트가 존재한다는 점
3. 다수의 개발자로 인한 수많은 튜토리얼과 프로젝트가 존재한다는 점
이러한 장점으로 인해 수많은 능력있는 개발자와 기업들이 Git을 채용하고 있는 추세입니다.
솔직히 개발자 사이에서 GitHub 주소가 없다는것은 다소 부끄러운 일이죠.
Git은 master 저장소 서버와 master 저장소의 완전한 사본을 가지는 클라이언트 저장소로 구성되어 있습니다.
그리고 Git은 다음과 같은 기능을 지원합니다.
1. 로컬 및 원격 저장소 생성
2. 로컬 저장소에 파일 생성 및 추가
3. 수정 내역을 로컬 저장소로 제출
4. 파일 수정 내역 추적
5. 원격 저장소에 제출된 수정 내역을 로컬 저장소에 적용
6. master에 영향을 끼치지 않는 브랜치 생성
7. 브랜치 사이의 병합(merge)
8. 브랜치를 병합하는 도중의 충돌 감지
등등등....
Git을 이용해 협업을 하면 팀원 사이의 버전 맞춤, 할당된 작업의 결과물 관리, 특정결과물이 누구의 소유인지 추적하는것이 가능합니다.
위의 내용만으로도 우리는 Git을 반드시 배워야할 당위성이 생긴것으로 간주해도 될까요?? ^^;;
다음 강의에선느 Git의 설치와 설정에 대해서 살펴보도록 하겠습니다.
그럼 안녕히~~~
GitHub와 Git 연동 ( git clone, git remote ) (0) | 2019.01.01 |
---|---|
GitHub 원격저장소 생성 (0) | 2018.12.30 |
GitHub 가입하기 (0) | 2018.12.29 |
Git 기본 명령어 ( 로컬 저장소 사용 ) (0) | 2018.12.27 |
Git 설치 ( 윈도우 환경 ) (0) | 2018.12.22 |
댓글 영역