1. Git
- Git은 가장 일반적으로 사용되는 버전 제어 시스템이다. Git은 파일의 변경 내용을 추적하므로 수행된 작업에 대한 기록이 있으며 필요한 경우 특정 버전으로 되돌릴 수 있다. Git은 또한 공동 작업을 더 쉽게 만들어 여러 사람에 의한 변경 사항을 모두 하나의 소스로 병합할 수 있게 한다. 따라서 여러분만이 볼 수 있는 코드를 작성하든, 팀의 일원으로 작업하든 상관없이 Git은 여러분에게 유용하다.
2. VCS(Version Control System)
- 클라이언트 - 서버 모델
- 하나의 중앙 서버가 존재하며, 여러 클라이언트들은 중앙 서버에서 각자 맡은 파트만 가져와서 작업하고,다시 중앙으로 통합하는것
- 대표적 시스템으로 CVS,
Subversion(SVN)
등이 있다
- 분산 모델
- 하나의 중앙 서버가 존재하지만, 여러 클라이언트들은 각자의 컴퓨터 저장소에 중앙 서버의 전체 사본을 가지고 작업하는 것을 의미한다.
- 대표적으로
git
이 있다.
3. Git의 특징
- Distributed development
- 전체 개발 이력을 각 개발자의 로컬로 복사본을 제공하고 변경된 이력을 다시 하나의 저장소로 복사한다.
- 이러한 변경은 추가개발지점을 가져와, 로컬개발 지점과 동일하게 병합(merge)할 수 있다.저장소는 Git protocol 및 HTTP로 쉽고 효율적(특별한 웹서버 구성없이)으로 접근할 수 있다.
- Strong support for non-linear development
- 신속하고 편리한 branch 및 merge 지원, 비선형(여러갈래) 개발 이력을 시각화하고 탐색 할 수 있는 강력한 도구를 제공한다.
- Efficient handling of large projects
- Git은 매우 빠르고, 대형프로젝트나 이력이 많은 작업에 매우 합리적이다. Git은 대부분의 다른 버전관리시스템보다 빠르게 요청한다. 그리고 일부 작업에서는 더 빠르게 진행한다.
- 또한, 최근의 정상급 오픈소스 버전관리 시스템보다 장기간의 수정내역을 매우 효율적인 압축방법을 사용한다.
- Cryptographic authentication of history
- Git의 이력은 성공한 개발이력의 commit에 의해 개정명으로 저장된다. 일단 그것이 배포되면, 그것을 모르고 예전버전으로 변경하는것은 불가능하다. 또한, 그것들을 암호화 할수 있다.
- Toolkit design
- UNIX의 전통에 따라, GIT은 C로 작성된 많은 소규모 도구모음이다, 그리고 많은 스크립트들이 기능 보강을 제공한다. Git은 새로운 기발한 작업을 위한 손쉬운 사용과 쉬운 스크립팅을 위한 도구를 제공한다.
4. Git과 관련된 용어들
- Repository : 저장소를 의미하며, 저장소는 히스토리, 태그, 소스의 가지치기 혹은 branch에 따라 버전을 저장한다. 저장소를 통해 작업자가 변경한 모든 히스토리를 확인 할 수 있다.
- Working Tree : 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점.
- Staging Area : 저장소에 커밋하기 전에 커밋을 준비하는 위치.
- Commit : 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업.
- Head : 현재 작업중인 Branch를 가리킨다.
- Branch : 가지 또는 분기점을 의미하며, 작업을 할때에 현재 상태를 복사하여 Branch에서 작업을 한 후에 완전하다 싶을때 Merge를 하여 작업을 한다.
- Merge : 다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업을 의미한다.
5. Git과 Github(remote repository)의 차이
- github는 git으로 관리할 소스코드를 올릴 원격 저장소를 뜻한다.
- 원격 저장소를 설정한 후 파일 및 수정 기록을 업로드(push)할 수 있고 다른 사람이 원격 리포지토리를 변경한 후 해당 변경 내용을 로컬 리포지토리로 다운로드(pull)할 수 있다.
- 이외에도 Bitbucket, Gitlab등이 있다
Reference
'Git' 카테고리의 다른 글
[Git] Git 명령어 모음 (0) | 2021.03.09 |
---|