Upload
-
View
1.178
Download
5
Embed Size (px)
Citation preview
Git
하늘소24기 윤승용
버전관리
버전관리?
파일의 변화를 시간에 따라 기록하여과거 특정 시점의 버전을 다시 불러올 수 있는 시스템
VCS (Version Control System)라고 함
새내기의 프로그래밍 첫 걸음참여 인원 1명, 파일 1개, 코드 6줄, 5분 소요
모든 실수를 바로 잡을 수 있는 만능 키
CTRL Z+
개인 프로젝트참여 인원 1명, 파일 5개 이상, 코드 1,000줄 내외, 4-5시간 소요
팀 프로젝트참여 인원 4명, 파일 10개 이상, 코드 5,000줄 내외, 1개월소요
구글 플레이 출시용 프로젝트 DTRO참여 인원 1명, 파일 39개, 코드 9,312줄, 3개월소요
YooiiStudios 에서 맡은 첫 프로젝트 Sketch Kit참여 인원 4명, 파일 293개, 코드 50,856줄, 10개월 소요
YooiiStudios 에서 진행 중인 프로젝트 Swish참여 인원 3명, 파일 610개, 코드 145,342줄, 10개월소요
‘Ctrl+Z’ 로는 한계가 있음
CTRL Z+
디렉토리로 파일 복사해서 관리
로컬 VCS
CVCS (Central Version Control System)중앙 집중식 버전 관리
대표적인 CVCS : SVN
DVCS (Distributed Version Control System)분산 버전 관리
대표적인 DVCS : Git
Git의 역사
2005년생
리눅스의 아버지 ‘리누즈 토발즈’
Git의 목표
• 빠른 속도
• 단순한 구조
• 비선형적 개발 (동시성)
• 완벽한 분산
• Linux 커널 같은 대형 프로젝트에도 활용할 수 있어함 (속도, 크기)
Git vs SVN
Git의 기초
기존 VCS의 데이터 관리
Git과 다른 VCS와 가장 큰 차이점은 ‘스냅샷’
거의 대부분의 명령은 로컬에서 이루어짐
GitSVN
Repository
local
Repository
local
LocalRepository
commit
Stage 영역이 있음
Git의 활용
용어 정리
• Commit : 수정 내역을 사용자 기준 단위로 기록 (보통 1개의 기능 단위)
• Branch : 내 원래 소스코드와 독립된 작업 공간, 여기서 무슨 짓을 해도 괜찮음
• CheckOut : Branch간의 이동
• Merge : Branch와 Branch를 병합
시간표 짜는 프로그램을 만들어 보자Git에는 Default로 Master라는 Branch가 있다
Master
HEAD
Commit은 Branch에 기록된다
Master
Commit 1 : 프로젝트초기 세팅
Commit 2 : 시간표 추가 기능 구현
Commit 3 : 시간표수정 기능 구현
HEAD
기존에 코드는안전하게놔두고,시간표 알람이기능을 만들고싶다
Alarm이라는 새 Branch를 만들어 작업
Alarm
Master
Commit 1 : 프로젝트초기 세팅
Commit 2 : 시간표 추가 기능 구현
Commit 3 : 시간표수정 기능 구현
Commit 4 : 알람 기능 구현
HEAD
만약, Alarm 에서 작업 중,Master 에서 수정할 일이생김
Master를 Checkout 한 뒤 수정 작업
Alarm
Master
Commit 1 : 프로젝트초기 세팅
Commit 2 : 시간표 추가 기능 구현
Commit 3 : 시간표수정 기능 구현
Commit 4 : 알람 기능 구현
HEAD
알람 기능이제대로 동작도안하고,코드도 더럽고때려치우고싶다
Master로 돌아오고, Alarm 삭제
Alarm
Master
Commit 1 : 프로젝트초기 세팅
Commit 2 : 시간표 추가 기능 구현
Commit 3 : 시간표수정 기능 구현
Commit 4 : 알람 기능 구현
HEAD
Alarm 에서 작업 한 기능이성공적이고,원본 코드와합쳐도 될 것 같다
Alarm을 Master로 Merge
Alarm
Master
Commit 1 : 프로젝트초기 세팅
Commit 2 : 시간표 추가 기능 구현
Commit 3 : 시간표수정 기능 구현
Commit 4 : 알람 기능 구현
HEAD
Remote Repository를 통해 백업 및 협업을하기 위한
Push / Pull 기능
code Localrepo
Remoterepo
Push
code Localrepo
Remoterepo
FetchMerge
Pull = Fetch à Merge
해당 작업을 반복하고, 프로젝트를 진행해 나가면..
실제 개발에서 대중적으로 사용하는 Branch 관리 기법
Git 쉽게 활용하기
Git Remote Repository Service
여러 협업 Tool들과 연동 가능
추가로, GitHub는 멋진 OpenSource가 많음구현하기 힘든 이슈는 GitHub를 찾아볼 것
GUI Tool을 활용
Git 기능들을 쉽게 사용 가능수정 사항들을 쉽게 파악 할 수 있음
More about Git
• Git Official Website : https://git-scm.com
• Git-Flow : https://github.com/nvie/gitflow