45
Git 하늘소 24기 윤승용

Git이란 (Git 소개 및 기초 이론)

  • Upload
    -

  • View
    1.178

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Git이란 (Git 소개 및 기초 이론)

Git

하늘소24기 윤승용

Page 2: Git이란 (Git 소개 및 기초 이론)

버전관리

Page 3: Git이란 (Git 소개 및 기초 이론)

버전관리?

파일의 변화를 시간에 따라 기록하여과거 특정 시점의 버전을 다시 불러올 수 있는 시스템

VCS (Version Control System)라고 함

Page 4: Git이란 (Git 소개 및 기초 이론)

새내기의 프로그래밍 첫 걸음참여 인원 1명, 파일 1개, 코드 6줄, 5분 소요

Page 5: Git이란 (Git 소개 및 기초 이론)

모든 실수를 바로 잡을 수 있는 만능 키

CTRL Z+

Page 6: Git이란 (Git 소개 및 기초 이론)

개인 프로젝트참여 인원 1명, 파일 5개 이상, 코드 1,000줄 내외, 4-5시간 소요

Page 7: Git이란 (Git 소개 및 기초 이론)

팀 프로젝트참여 인원 4명, 파일 10개 이상, 코드 5,000줄 내외, 1개월소요

Page 8: Git이란 (Git 소개 및 기초 이론)

구글 플레이 출시용 프로젝트 DTRO참여 인원 1명, 파일 39개, 코드 9,312줄, 3개월소요

Page 9: Git이란 (Git 소개 및 기초 이론)

YooiiStudios 에서 맡은 첫 프로젝트 Sketch Kit참여 인원 4명, 파일 293개, 코드 50,856줄, 10개월 소요

Page 10: Git이란 (Git 소개 및 기초 이론)

YooiiStudios 에서 진행 중인 프로젝트 Swish참여 인원 3명, 파일 610개, 코드 145,342줄, 10개월소요

Page 11: Git이란 (Git 소개 및 기초 이론)

‘Ctrl+Z’ 로는 한계가 있음

CTRL Z+

Page 12: Git이란 (Git 소개 및 기초 이론)

디렉토리로 파일 복사해서 관리

Page 13: Git이란 (Git 소개 및 기초 이론)

로컬 VCS

Page 14: Git이란 (Git 소개 및 기초 이론)

CVCS (Central Version Control System)중앙 집중식 버전 관리

Page 15: Git이란 (Git 소개 및 기초 이론)

대표적인 CVCS : SVN

Page 16: Git이란 (Git 소개 및 기초 이론)

DVCS (Distributed Version Control System)분산 버전 관리

Page 17: Git이란 (Git 소개 및 기초 이론)

대표적인 DVCS : Git

Page 18: Git이란 (Git 소개 및 기초 이론)

Git의 역사

Page 19: Git이란 (Git 소개 및 기초 이론)

2005년생

Page 20: Git이란 (Git 소개 및 기초 이론)

리눅스의 아버지 ‘리누즈 토발즈’

Page 21: Git이란 (Git 소개 및 기초 이론)

Git의 목표

• 빠른 속도

• 단순한 구조

• 비선형적 개발 (동시성)

• 완벽한 분산

• Linux 커널 같은 대형 프로젝트에도 활용할 수 있어함 (속도, 크기)

Page 22: Git이란 (Git 소개 및 기초 이론)

Git vs SVN

Page 23: Git이란 (Git 소개 및 기초 이론)

Git의 기초

Page 24: Git이란 (Git 소개 및 기초 이론)

기존 VCS의 데이터 관리

Page 25: Git이란 (Git 소개 및 기초 이론)

Git과 다른 VCS와 가장 큰 차이점은 ‘스냅샷’

Page 26: Git이란 (Git 소개 및 기초 이론)

거의 대부분의 명령은 로컬에서 이루어짐

GitSVN

Repository

local

Repository

local

LocalRepository

commit

Page 27: Git이란 (Git 소개 및 기초 이론)

Stage 영역이 있음

Page 28: Git이란 (Git 소개 및 기초 이론)

Git의 활용

Page 29: Git이란 (Git 소개 및 기초 이론)

용어 정리

• Commit : 수정 내역을 사용자 기준 단위로 기록 (보통 1개의 기능 단위)

• Branch : 내 원래 소스코드와 독립된 작업 공간, 여기서 무슨 짓을 해도 괜찮음

• CheckOut : Branch간의 이동

• Merge : Branch와 Branch를 병합

Page 30: Git이란 (Git 소개 및 기초 이론)

시간표 짜는 프로그램을 만들어 보자Git에는 Default로 Master라는 Branch가 있다

Master

HEAD

Page 31: Git이란 (Git 소개 및 기초 이론)

Commit은 Branch에 기록된다

Master

Commit 1 : 프로젝트초기 세팅

Commit 2 : 시간표 추가 기능 구현

Commit 3 : 시간표수정 기능 구현

HEAD

Page 32: Git이란 (Git 소개 및 기초 이론)

기존에 코드는안전하게놔두고,시간표 알람이기능을 만들고싶다

Alarm이라는 새 Branch를 만들어 작업

Alarm

Master

Commit 1 : 프로젝트초기 세팅

Commit 2 : 시간표 추가 기능 구현

Commit 3 : 시간표수정 기능 구현

Commit 4 : 알람 기능 구현

HEAD

Page 33: Git이란 (Git 소개 및 기초 이론)

만약, Alarm 에서 작업 중,Master 에서 수정할 일이생김

Master를 Checkout 한 뒤 수정 작업

Alarm

Master

Commit 1 : 프로젝트초기 세팅

Commit 2 : 시간표 추가 기능 구현

Commit 3 : 시간표수정 기능 구현

Commit 4 : 알람 기능 구현

HEAD

Page 34: Git이란 (Git 소개 및 기초 이론)

알람 기능이제대로 동작도안하고,코드도 더럽고때려치우고싶다

Master로 돌아오고, Alarm 삭제

Alarm

Master

Commit 1 : 프로젝트초기 세팅

Commit 2 : 시간표 추가 기능 구현

Commit 3 : 시간표수정 기능 구현

Commit 4 : 알람 기능 구현

HEAD

Page 35: Git이란 (Git 소개 및 기초 이론)

Alarm 에서 작업 한 기능이성공적이고,원본 코드와합쳐도 될 것 같다

Alarm을 Master로 Merge

Alarm

Master

Commit 1 : 프로젝트초기 세팅

Commit 2 : 시간표 추가 기능 구현

Commit 3 : 시간표수정 기능 구현

Commit 4 : 알람 기능 구현

HEAD

Page 36: Git이란 (Git 소개 및 기초 이론)

Remote Repository를 통해 백업 및 협업을하기 위한

Push / Pull 기능

code Localrepo

Remoterepo

Push

code Localrepo

Remoterepo

FetchMerge

Pull = Fetch à Merge

Page 37: Git이란 (Git 소개 및 기초 이론)

해당 작업을 반복하고, 프로젝트를 진행해 나가면..

Page 38: Git이란 (Git 소개 및 기초 이론)

실제 개발에서 대중적으로 사용하는 Branch 관리 기법

Page 39: Git이란 (Git 소개 및 기초 이론)

Git 쉽게 활용하기

Page 40: Git이란 (Git 소개 및 기초 이론)

Git Remote Repository Service

Page 41: Git이란 (Git 소개 및 기초 이론)

여러 협업 Tool들과 연동 가능

Page 42: Git이란 (Git 소개 및 기초 이론)

추가로, GitHub는 멋진 OpenSource가 많음구현하기 힘든 이슈는 GitHub를 찾아볼 것

Page 43: Git이란 (Git 소개 및 기초 이론)

GUI Tool을 활용

Page 44: Git이란 (Git 소개 및 기초 이론)

Git 기능들을 쉽게 사용 가능수정 사항들을 쉽게 파악 할 수 있음

Page 45: Git이란 (Git 소개 및 기초 이론)

More about Git

• Git Official Website : https://git-scm.com

• Git-Flow : https://github.com/nvie/gitflow