ݺߣ

ݺߣShare a Scribd company logo
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
Local
Repository
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 Local
repo
Remote
repo
Push
code Local
repo
Remote
repo
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

More Related Content

What's hot (20)

svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드
Insub Lee
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control System
KMS Technology
Learning git
Learning gitLearning git
Learning git
Sid Anand
Git and Github Session
Git and Github SessionGit and Github Session
Git and Github Session
GoogleDevelopersStud1
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective Git
Chanwoong Kim
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
Venkat Malladi
Git 101 for Beginners
Git 101 for Beginners Git 101 for Beginners
Git 101 for Beginners
Anurag Upadhaya
Git basics to advance with diagrams
Git basics to advance with diagramsGit basics to advance with diagrams
Git basics to advance with diagrams
Dilum Navanjana
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
Ji-Woong Choi
Git and github 101
Git and github 101Git and github 101
Git and github 101
Senthilkumar Gopal
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to git
Emanuele Olivetti
Version Control
Version ControlVersion Control
Version Control
Kivanc Kanturk
Git and Github
Git and GithubGit and Github
Git and Github
Wen-Tien Chang
Github basics
Github basicsGithub basics
Github basics
Radoslav Georgiev
Source control
Source controlSource control
Source control
Sachithra Gayan
Github - Git Training ݺߣs: Foundations
Github - Git Training ݺߣs: FoundationsGithub - Git Training ݺߣs: Foundations
Github - Git Training ݺߣs: Foundations
Lee Hanxue
초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub
Yurim Jin
Git tutorial
Git tutorialGit tutorial
Git tutorial
Pham Quy (Jack)
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
Nilay Binjola
Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1
Omar Fathy

Similar to Git이란 (Git 소개 및 기초 이론) (20)

[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)
Ildoo Kim
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 괶리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 괶리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 괶리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 괶리법 - 송창규
ChangKyu Song
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습 [숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
Soongsil University
Why use git
Why use gitWhy use git
Why use git
Taeung Song
Git lecture1
Git lecture1Git lecture1
Git lecture1
ssuseraf62e91
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기
Daum DNA
Basic study 1회차
Basic study 1회차Basic study 1회차
Basic study 1회차
Seonmun Choi
테스팅을위한선행조건 명세
테스팅을위한선행조건 명세테스팅을위한선행조건 명세
테스팅을위한선행조건 명세
규동 최규동
Git 과 GitHub 를 이용한 ѫ괶리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 ѫ괶리와 협업 - 1주차 - 첫 커밋 푸시하기Git 과 GitHub 를 이용한 ѫ괶리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 ѫ괶리와 협업 - 1주차 - 첫 커밋 푸시하기
Youngbin Han
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Byunghyun Ban
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST_NHNent
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
복연 이
오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료
BJ Jang
ҶٳҴǰ尭ᱫҴdzɱ5ᅵᆫᄀƥᆫᅮ,Ƶᆷᅩᅧᆼ.
ҶٳҴǰ尭ᱫҴdzɱ5ᅵᆫᄀƥᆫᅮ,Ƶᆷᅩᅧᆼ.ҶٳҴǰ尭ᱫҴdzɱ5ᅵᆫᄀƥᆫᅮ,Ƶᆷᅩᅧᆼ.
ҶٳҴǰ尭ᱫҴdzɱ5ᅵᆫᄀƥᆫᅮ,Ƶᆷᅩᅧᆼ.
dpfls5645
200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의 200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의
Joohyun Han
Svn 사용하기
Svn 사용하기Svn 사용하기
Svn 사용하기
Jung-Ho Kim
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
Joohyun Han
깃허브 시작하기
깃허브 시작하기깃허브 시작하기
깃허브 시작하기
진태 이
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
지원 정
[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)
Ildoo Kim
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 괶리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 괶리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 괶리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 괶리법 - 송창규
ChangKyu Song
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습 [숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
Soongsil University
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기
Daum DNA
테스팅을위한선행조건 명세
테스팅을위한선행조건 명세테스팅을위한선행조건 명세
테스팅을위한선행조건 명세
규동 최규동
Git 과 GitHub 를 이용한 ѫ괶리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 ѫ괶리와 협업 - 1주차 - 첫 커밋 푸시하기Git 과 GitHub 를 이용한 ѫ괶리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 ѫ괶리와 협업 - 1주차 - 첫 커밋 푸시하기
Youngbin Han
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Byunghyun Ban
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST_NHNent
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
복연 이
오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료
BJ Jang
ҶٳҴǰ尭ᱫҴdzɱ5ᅵᆫᄀƥᆫᅮ,Ƶᆷᅩᅧᆼ.
ҶٳҴǰ尭ᱫҴdzɱ5ᅵᆫᄀƥᆫᅮ,Ƶᆷᅩᅧᆼ.ҶٳҴǰ尭ᱫҴdzɱ5ᅵᆫᄀƥᆫᅮ,Ƶᆷᅩᅧᆼ.
ҶٳҴǰ尭ᱫҴdzɱ5ᅵᆫᄀƥᆫᅮ,Ƶᆷᅩᅧᆼ.
dpfls5645
200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의 200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의
Joohyun Han
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
Joohyun Han
깃허브 시작하기
깃허브 시작하기깃허브 시작하기
깃허브 시작하기
진태 이
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
지원 정

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