Brise
Git 개념 소개 및 개략적인 사용방법 본문
Git이란?
Git은 분산형 버전 관리 시스템이다. Git은 다음과 같은 기능들을 제공한다.
- 협업을 위한 코드 공유 - 여러 사람들이 협업을 할 경우, 코드를 각 개발자와, 팀간에 공유
- 접근 제한 - 사용자의 권한 등급에 따라 접근을 제한
- 다양한 버전(형상) 관리 - 소프트웨어 개발 버전 또는 릴리즈 (브랜치) 마다, 다른 코드를 저장할 수 있어야 한다.
예를 들어 릴리즈된 버전이나 마이너 버전에 대한 코드 관리, 패치 코드 관리 등이 그 예가 될 수 있다.
다양한 브렌치중 두개 이상의 브렌치를 하나의 코드로 합칠(merge)할 수 있어야 한다. - 특정 시점 추적 – 태깅 설명
- 변경 추적 - 마지막으로, 각 코드에 대한 변경을 추적할 수 있어야 함.
누가? 언제? 어떤 이유로 코드를 어떻게 변경을 했는지를 추적하여 문제 발생시 원인 분석을 할 수 있어야 한다.
버전 관리 시스템이란?
'로마는 하루 아침에 만들어 지지 않았다.' 라는 말이 있다. 무언가를 만들 때에 그것은 하루 만에 뚝딱 하고 만들어 낼 수 없다는 이야기이다.
프로젝트를 관리하기 위해서는 '언제, 무엇을, 얼마나' 했는지에 대하여 관리할 수 있어야 한다. 이를 관리하기 위한 시스템이 버전 관리 시스템이다.
Figure 1 버전 관리 시스템의 구조
버전 관리 시스템은 일반적으로 위와 비슷한 구조를 가진다. 어떠한 기능을 구현하거나, 버그를 잡기 위해 새로운 가지(branch)를 생성하고 기능이 구현되면 그것을 원래 있던 branch에 합치는 방식이다.
이 때에 이 프로젝트의 진행에 대한 완전한 정보를 어디에 보관하느냐에 따라 중앙 집중식(서버 하나에 보관) 과 분산식(여러 서버에 보관)으로 나뉜다. 중앙 집중 버전 관리 시스템의 대표적인 예는 SVN이며, 분산 버전 관리 시스템의 대표적인 예가 바로 git이다. 분산 버전관리 시스템은 중앙 집중 버전 관리 시스템에 비하여 안정성이 높고 다른 곳에서 작업하기에 수월하기 때문에 큰 오픈소스 프로젝트에서 자주 이용하고 있다.
Figure 2 중앙 집중 버전 관리 시스템 Figure 3 분산 버전 관리 시스템
Git사용하기
Figure 4 그림으로 간단히 이해하는 Git
- 새 Git 만들기
git init 명령어를 이용하여 새로운 저장소를 생성한다.
- 다른 repository에서 가져오기
git clone 저장소_경로
- 파일 추가 / 제거 / 변경 및 반영
git add
git commit –m {message}
git push 저장소
git pull 가지
git fetch 가지 - 가지(Branch) 만들기 / 합치기
git branch –b {branch_name}
git branch {branch_name}
git merge {branch_name}
Reference
Git 간편 안내서 : https://rogerdudler.github.io/git-guide/index.ko.html
Git 입문 (쉽게 설명) : https://backlogtool.com/git-guide/kr/intro/intro1_1.html
실제 홈페이지로 보는 Git : http://kr.discovermeteor.com/chapters/github/
Git 관리 전략 : http://bcho.tistory.com/773
다른 VCS와 비교한 Git : https://git-scm.com/book/ko/v1/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EA%B8%B0%EC%B4%88
Git 명령어들와 그 설명 예시 : http://dimdim.tistory.com/entry/GIT%EC%97%90-%EB%8C%80%ED%95%9C-%EB%82%B4%EC%9A%A9%EC%A0%95%EB%A6%AC-%EC%A0%95%EB%A6%AC%EC%A4%91
'프로그램' 카테고리의 다른 글
파일의 체크섬(checksum) 확인하기 (0) | 2016.12.17 |
---|---|
자바 cpu 사용률 측정하기 (0) | 2016.08.22 |
[Java] 기본형(primitive type) 타입 배열과 래퍼 클래스(wrapper class)사이의 변환 (0) | 2016.05.24 |
Utgard 설치(java 기반의 OPC DA 클라이언트 API) (0) | 2015.12.29 |
JDK를 이용할 때에 로그(정보) 메세지 출력받지 않기. (0) | 2015.12.29 |
[OPC DA] how to not display on console slf4j WARN message (0) | 2015.12.29 |
OPC DA DCOM Configuration (0) | 2015.12.28 |