개요
형상관리 툴 중 하나인 Git에 대해 알아보기 |
내용
Git이란?
형상 관리 도구(Configuration Management Tool) 중 하나
- 참고로 형상 관리 도구는 버전 관리 시스템이라고도 한다.
- Git은 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료, 공개소프트웨어.
- SVN보다 여러 장점이 있어 SVN을 쓰던 개발 조직들은 하나둘씩 Git으로 갈아타고 있다.
SVN과 Git의 차이점
- Git이 SVN과 다른 점은 분산형 관리 시스템이라는 것이다.
- SVN : 중앙 서버에 소스코드와 히스토리를 저장하는 과 달리
- Git : 소스코드를 여러 개발 PC와 저장소에 분산해서 저장
- 그렇기 때문에 중앙 서버에 장애가 발생해도 로컬 저장소에 커밋을 할 수 있으며, 로컬 저장소들을 이용하여 중앙 저장소의 복원도 가능하다.
- 사본을 로컬에서 관리하기 때문에 GIT이 SVN에 비해 훨씬 빠르다. (SVN은 변경 로그 하나 보는 것도 인터넷을 경유해야 한다.)
Git의 장점
- 소스코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능하다.
- 즉 브랜치를 통해 개발한 뒤, 본 프로그램에 합치는 방식(Merge)으로 개발을 진행할 수 있다.
- 분산 버전관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있으며, 중앙 저장소가 날라가버려도 다시 원상복구할 수 있습니다.
- 팀 프로젝트가 아닌, 개인 프로젝트일지라도 GIT을 통해 버전 관리를 하면 체계적인 개발이 가능해지고, 프로그램이나 패치를 배포하는 과정도 간단해집니다. (pull을 통한 업데이트, patch 파일 배포)
Git? Github?
- Git : 형상 관리 도구(버전 관리 시스템)
- Github : 형상 관리 도구(버전 관리) 웹호스팅 서비스
Git (형상 관리 도구)
- 프로젝트를 진행하면서 소스 코드를 USB나 메일로 주고받는 건 엄청난 낭비 임과 동시에 보안성 위험이 있다.
그렇기 때문에 프로젝트를 진행 함에 있어 형상 관리 도구를 사용 한다.
- 형상 관리 도구를 사용하면 변경을 쉽게 되돌릴 수 있다. 소스코드를 과거의 특정 시점으로 되돌리거나, 특정 시점의 변경 사항을 취소하거나, 두 버전의 소스 코드를 비교하는 등의 일이 가능하다.
Git 웹 호스팅 시스템
- 협업하고 있는 코드를 저장할 서버가 필요하다.
- 버전 관리 시스템을 지원하는 웹호스팅 서비스의 기능을 통해, push, pull request같은 이벤트에 반응하여 자동으로 작업(배포 등)을 실행하게 할 수 있다.
ex) GitHub, GitLab, BitBucket
Git GUI
- 너무 많은 git 명령어를 자유자재로 외울 자신이 없을 땐 GUI를 사용할 수도 있다.
ex) GitHub Desktop, SourceTree, GitKraken, Fork
관련 용어
- Repository: 저장소를 의미하며, 저장소는 히스토리, 태그, 소스의 가지치기 혹은 branch에 따라 버전을 저장한다. 저장소를 통해 작업자가 변경한 모든 히스토리를 확인 할 수 있다.
- Working Tree: 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점.
- Staging Area: 저장소에 커밋하기 전에 커밋을 준비하는 위치.
- Commit: 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업.
- Head: 현재 작업중인 Branch를 가리킨다.
- Branch: 가지 또는 분기점을 의미하며, 작업을 할때에 현재 상태를 복사하여 Branch에서 작업을 한 후에 완전하다 싶을때 Merge를 하여 작업을 한다.
- Merge: 다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업을 의미한다.
- git init: 버전관리 하고싶은 폴더에서 초기화를 하는 준비
- git branch:
독립적인 공간을 만든다.
새로 만든 branch lab1은 master와 완전히 동일한 상태를 가진 공간.
브랜치에서 수정을 한 후 커밋하면 lab1에만 기록되며 master 브랜치에는 어떤 영향도 주지 않는다.
원하는 만큼 빠르게 branch를 만들 수 있다.
실험 중 다른 브랜치로 돌아가야 할 때 : checkout master 로 head를 옮겨야 한다.
(cf > 작업 중인 위치를 가르키는 가상의 커서가 존재하는데 이를 git에서는 HEAD라 한다.)
실험 성공 : lab1 브랜치의 내용을 마스터 브랜치와 병합(Merge) 한다.
실험 실패 : lab1 브랜치를 삭제한다.
- checkout: 독립된 작업 공간인 브랜치를 자유롭게 이동할 수 있다.
- git commit: 의미있는 수정 작업이 끝났을 때 마침을 알리는 작업
- pull: 리모트 저장소의 변경된 내용을 로컬(내 컴퓨터) 저장소에 적용하는 작업을 pull이라 한다.
- master: git init을 했을 때, default로 만들어지는 가지가 'master'이다.
동료와 함께 작업하려면? -> github! or bitbucket
- git은 'remote 저장소'를 지원한다.
- github이 바로 remote저장소이다.
- bitbucket은 5명까지 공동작업 가능하다. (그 이상은 유료)
- github은 private가 유료이다.
'개발메모 > 간단정리' 카테고리의 다른 글
[간단정리] Web Server(웹서버), WAS 특징 및 차이 (0) | 2022.06.19 |
---|---|
[간단정리] ORM(Object-Relational Mapping) 이란? (0) | 2022.06.17 |
[간단정리] 프로세스, 스레드 특징 및 차이점 (0) | 2022.06.16 |
[간단정리] Git, SVN 특징 및 차이점 (0) | 2022.06.12 |
[간단정리]프레임워크, 라이브러리 특징 및 차이점 (0) | 2022.06.08 |