SlideShare a Scribd company logo
git?
리눅스 커널 프로젝트 소스 관리
patch 및 압축 Bitkeeper git
2002 2005
• 초기 부터 2002년까지 패치 및 압축으로 소스 관리
• 2002년 부터 DVCS를 사용(Bitkeeper)
• Bitkeerper와 관계가 틀어짐
• 리누스 토발즈가 git 개발
• 2005년부터 지금까지 git 사용
git의 목표
• 빠른속도

• 단순한 구조

• 비선형적인 개발 ( 동시 다발적인 브랜치)

• 완벽한 분산

• 리눅스 커널 같은 대형프로젝트에 유용할 것
그래서 왜 git을 써야하는데?
SVN 구조
저장소사용자
commit
SVN 구조
저장소사용자
commit
git 구조
저장소
local
commit
git 구조
저장소
local
commit
원격 저장소
push
git 구조
저장소
local
commit
원격 저장소
push
SVN 파일 저장방식
각 파일에 대한 변화(델타)를 저장하는 방식
델타 : A파일과 B파일사이의 다른부분
델타파일 = 패치파일
델타
git 파일 저장방식
파일의 변화를 스냅샵으로 저장
변경하지 않는 파일은 이전 스냅샷 링크
이전 스냅샷 링크 스냅샷
1kb
0.1
kb
0.1
kb
0.1
kb
0.1
kb
1kb 1kb1kb1kb 1kb
1.4 kb
5 kb
SVN
git
파일크기
1kb
0.1
kb
0.1
kb
0.1
kb
0.1
kb
1kb 1kb1kb1kb 1kb
1.4 kb
5 kb
SVN
파일크기
1kb
git
gzip(delta file)
특정시점에 GC가 발생
마지막 리비젼 스냅샷만두고
델타파일로 변경 후 gzip 압축
SVN : version 4 가져오기
기초파일을 기준으로 지금까지 변경한 델타 파일을 비교하면서 파일 완성
기초파일
git : version 4 가져오기
스냅샷 파일만으로 완성
이전 스냅샷 링크 스냅샷
깃은 빠르다
git 공식홈페이지 참조
git 3가지 상태
Working
Directory
Staging
Area
.git directory
Repository
git add
git commit
git checkout
git commit -a
modified staged committed
• untracked : 추적하지 않는 신규 파일
• tracked : 추적하는 파일
• modified : 파일이 수정된 후 add / commit 하지 않은 상태
• staged : 현재 파일을 곧 commit 할것이라고 표시한 상태
• committed : 안전하게 repository에 반영된 상태
Staging area ?
• Index area

• 이건 왜 필요한가?

• 일부분만 commit 할 때

• 충돌을 해결할 때

• commit을 다시 할 때
add
commit
merge
rebase
reset
pull
push
log
stash
config
init
checkoutbranch
diff
clone
fetch
remote
cherry-pick
status
git fetch
commit-0 commit-1
master
commit-2
commit-3
commit-4
FETCH_HEAD
commit-5
pull = fetch + merge
HEAD
현재 브랜치의(작업중인)
마지막 commit
commit-0 commit-1
master
commit-2
commit-3
HEAD
dev
commit-4
git status
로컬 저장소의 상태를 확인
변경된 파일의 상태
현재 브랜치 이름
git stash
• 워킹 디렉토리에 있는 unstaged 파일을 백업하고 워킹디렉토리를
깨끗한 상태로 만드는 명령어

• git stash list 

• git stash pop (or apply)
merge
commit-0 commit-1
master
HEAD
commit-2
git commit
git commit
git commit
merge
commit-0 commit-1
master
commit-2
git checkout -b dev
git commit
git commit
commit-3
HEAD
dev
commit-4
merge
commit-0 commit-1
master
commit-2
git checkout master
git merge dev
HEAD
dev
commit-4commit-3
fast-forward
merge
commit-0 commit-1
master
commit-2
commit-3
HEAD
dev
commit-4
commit-5
master 브랜치에서도 새로운 commit이 발생!
merge
commit-0 commit-1
master
commit-2
commit-3
HEAD
dev
commit-4
commit-5
merge
commit
불필요한 commit object가 생성
git checkout master
git merge dev
rebase
commit-0 commit-1
master
commit-2
commit-3
HEAD
dev
commit-4
commit-5
commit-3의
base commit
rebase
commit-1 commit-2
master
commit-5
HEAD
dev
commit-4commit-3
commit-3의
base commit
fast-forward
git checkout dev
git rebase master
그건 이미 알겠고
그래서 왜 git을 써야하는데?
branch
모든 버전 관리 시스템은 브랜치를 지원한다.
개발을 하다보면 코드를 여러개로 복사해야하는 일이 자주생긴다.
코드를 통째로 복사하고 나서 원래 코드와 상관없이 독립적으로 개발을 진행 할수 있는데
이렇게 독립적으로 개발 하는것이 브랜치다.
pro git
메인라인 브랜치
master
충현
branch
길주
branch
동주
branch
기능별 브랜치
master
 통합
branch
feature1
branch
feature2
branch
상태 브랜치
 pu
branch
 next
branch
 master
branch
 maint
branch
git 프로젝트에서 사용하는 브랜치
 개발자
branch
pu : 기능 제안 관련 커밋 포함
next : master 브랜치에 포함되기전 안정성 테스트 할 커밋을 포함
master : 다음 릴리즈에 추가 할 커밋을 포함
maint : 가장 최신화 된 릴리즈버젼의 git 코드와 유지보수용 추가 커밋을 포함
브랜치 전략
master hotfix stage dev feature1 feature2
dev, feature
dev feature1 feature2
merge
stage
dev feature1 feature2
merge
stage
merge
master
dev feature1 feature2stage
merge
master
merge
merge
merge
hotfix
dev feature1 feature2stagemaster hotfix
The End

More Related Content

What's hot

Git & Github Seminar-1
Git & Github Seminar-1Git & Github Seminar-1
Git & Github Seminar-1
sangyun han
 
Git branch stregagy & case study
Git branch stregagy & case studyGit branch stregagy & case study
Git branch stregagy & case study
Woo Jin Kim
 
Git
GitGit
Git basic
Git basicGit basic
Git basic
Jinhan Heo
 
Basic git-commands
Basic git-commandsBasic git-commands
Basic git-commands
insanehong Kim
 
11. git basic
11. git basic11. git basic
11. git basic
Geunhyung Kim
 
이클립스로 GIT 사용하기
이클립스로 GIT 사용하기이클립스로 GIT 사용하기
이클립스로 GIT 사용하기
우영 주
 
Git 코드랩 스터디 2
Git 코드랩 스터디 2Git 코드랩 스터디 2
Git 코드랩 스터디 2
승빈이네 공작소
 
Github 사용법
Github 사용법Github 사용법
Github 사용법
jong seok Kim
 
Advanced git
Advanced gitAdvanced git
Advanced git
chanwoo Jeong
 
Git이란 (Git 소개 및 기초 이론)
Git이란 (Git 소개 및 기초 이론)Git이란 (Git 소개 및 기초 이론)
Git이란 (Git 소개 및 기초 이론)
승용 윤
 
Git & GitHub
Git & GitHubGit & GitHub
Git & GitHub
Jongmin Park
 
오픈소스 공헌을 위한 필수 지식
오픈소스 공헌을 위한 필수 지식오픈소스 공헌을 위한 필수 지식
오픈소스 공헌을 위한 필수 지식
Matthew (정재화)
 
Git 입문자를 위한 가이드
Git 입문자를 위한 가이드Git 입문자를 위한 가이드
Git 입문자를 위한 가이드
chandler0201
 
Git 사용 가이드
Git 사용 가이드Git 사용 가이드
Git 사용 가이드
도형 임
 
Git 기본
Git 기본Git 기본
Git 기본
HyunWook Kang
 
Git는 머꼬? GitHub는 또 머지?
Git는 머꼬? GitHub는 또 머지?Git는 머꼬? GitHub는 또 머지?
Git는 머꼬? GitHub는 또 머지?
Ian Choi
 
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective Git
Chanwoong Kim
 
Git 사용법 공유 + Unity3D with git
Git 사용법 공유 + Unity3D with gitGit 사용법 공유 + Unity3D with git
Git 사용법 공유 + Unity3D with git
SeongSik Kim
 
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
Youngbin Han
 

What's hot (20)

Git & Github Seminar-1
Git & Github Seminar-1Git & Github Seminar-1
Git & Github Seminar-1
 
Git branch stregagy & case study
Git branch stregagy & case studyGit branch stregagy & case study
Git branch stregagy & case study
 
Git
GitGit
Git
 
Git basic
Git basicGit basic
Git basic
 
Basic git-commands
Basic git-commandsBasic git-commands
Basic git-commands
 
11. git basic
11. git basic11. git basic
11. git basic
 
이클립스로 GIT 사용하기
이클립스로 GIT 사용하기이클립스로 GIT 사용하기
이클립스로 GIT 사용하기
 
Git 코드랩 스터디 2
Git 코드랩 스터디 2Git 코드랩 스터디 2
Git 코드랩 스터디 2
 
Github 사용법
Github 사용법Github 사용법
Github 사용법
 
Advanced git
Advanced gitAdvanced git
Advanced git
 
Git이란 (Git 소개 및 기초 이론)
Git이란 (Git 소개 및 기초 이론)Git이란 (Git 소개 및 기초 이론)
Git이란 (Git 소개 및 기초 이론)
 
Git & GitHub
Git & GitHubGit & GitHub
Git & GitHub
 
오픈소스 공헌을 위한 필수 지식
오픈소스 공헌을 위한 필수 지식오픈소스 공헌을 위한 필수 지식
오픈소스 공헌을 위한 필수 지식
 
Git 입문자를 위한 가이드
Git 입문자를 위한 가이드Git 입문자를 위한 가이드
Git 입문자를 위한 가이드
 
Git 사용 가이드
Git 사용 가이드Git 사용 가이드
Git 사용 가이드
 
Git 기본
Git 기본Git 기본
Git 기본
 
Git는 머꼬? GitHub는 또 머지?
Git는 머꼬? GitHub는 또 머지?Git는 머꼬? GitHub는 또 머지?
Git는 머꼬? GitHub는 또 머지?
 
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective Git
 
Git 사용법 공유 + Unity3D with git
Git 사용법 공유 + Unity3D with gitGit 사용법 공유 + Unity3D with git
Git 사용법 공유 + Unity3D with git
 
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
 

Similar to Git

Fun git hub
Fun git hubFun git hub
Fun git hub
Kenu, GwangNam Heo
 
Git basic2 chaos
Git basic2 chaosGit basic2 chaos
Git basic2 chaosYunkyu Choi
 
Git: A Motivating Introduction
Git: A Motivating IntroductionGit: A Motivating Introduction
Git: A Motivating Introduction
Jongwook Choi
 
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XpressEngine
 
Git command
Git commandGit command
Git command
Hyeongmin Lee
 
git-workflow
git-workflowgit-workflow
git-workflow
Aria (In Suk) Kim
 
About Git_2017.08.31 aug 투씨드 (박재석)
About Git_2017.08.31 aug 투씨드 (박재석)About Git_2017.08.31 aug 투씨드 (박재석)
About Git_2017.08.31 aug 투씨드 (박재석)
Jaeseok Park
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습
BJ Jang
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
MDLicht
 
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
Ji-Woong Choi
 
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - TwoseedGit의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
Atlassian 대한민국
 
Git & Github Seminar-2
Git & Github Seminar-2Git & Github Seminar-2
Git & Github Seminar-2
sangyun han
 
[VCS] Git&GitLab_Designer
[VCS] Git&GitLab_Designer[VCS] Git&GitLab_Designer
[VCS] Git&GitLab_Designer
Lee Beomho
 
Git lecture2
Git lecture2Git lecture2
Git lecture2
ssuseraf62e91
 
Git lecture1
Git lecture1Git lecture1
Git lecture1
ssuseraf62e91
 
About git
About gitAbout git
About git
혜승 이
 
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+githubGit 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Junyoung Lee
 
[NEXT 프연 Week1] Git 시작하기
[NEXT 프연 Week1] Git 시작하기[NEXT 프연 Week1] Git 시작하기
[NEXT 프연 Week1] Git 시작하기
Young-Ho Cho
 

Similar to Git (20)

Git
GitGit
Git
 
Fun git hub
Fun git hubFun git hub
Fun git hub
 
Git basic2 chaos
Git basic2 chaosGit basic2 chaos
Git basic2 chaos
 
Git: A Motivating Introduction
Git: A Motivating IntroductionGit: A Motivating Introduction
Git: A Motivating Introduction
 
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
 
Git command
Git commandGit command
Git command
 
git-workflow
git-workflowgit-workflow
git-workflow
 
About Git_2017.08.31 aug 투씨드 (박재석)
About Git_2017.08.31 aug 투씨드 (박재석)About Git_2017.08.31 aug 투씨드 (박재석)
About Git_2017.08.31 aug 투씨드 (박재석)
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습
 
Git
Git Git
Git
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
 
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
 
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - TwoseedGit의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
 
Git & Github Seminar-2
Git & Github Seminar-2Git & Github Seminar-2
Git & Github Seminar-2
 
[VCS] Git&GitLab_Designer
[VCS] Git&GitLab_Designer[VCS] Git&GitLab_Designer
[VCS] Git&GitLab_Designer
 
Git lecture2
Git lecture2Git lecture2
Git lecture2
 
Git lecture1
Git lecture1Git lecture1
Git lecture1
 
About git
About gitAbout git
About git
 
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+githubGit 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
 
[NEXT 프연 Week1] Git 시작하기
[NEXT 프연 Week1] Git 시작하기[NEXT 프연 Week1] Git 시작하기
[NEXT 프연 Week1] Git 시작하기
 

More from Choonghyun Yang

Maven build for 멀티프로젝트 in jenkins
Maven build for 멀티프로젝트 in jenkins Maven build for 멀티프로젝트 in jenkins
Maven build for 멀티프로젝트 in jenkins
Choonghyun Yang
 
데이터 모델링
데이터 모델링데이터 모델링
데이터 모델링
Choonghyun Yang
 
Spring boot actuator
Spring boot   actuatorSpring boot   actuator
Spring boot actuator
Choonghyun Yang
 
Spring boot 5장 cli
Spring boot 5장 cliSpring boot 5장 cli
Spring boot 5장 cli
Choonghyun Yang
 
Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)
Choonghyun Yang
 
자료구조 – 트리 (Tree)
자료구조 – 트리 (Tree)자료구조 – 트리 (Tree)
자료구조 – 트리 (Tree)
Choonghyun Yang
 
자료구조 큐
자료구조 큐자료구조 큐
자료구조 큐
Choonghyun Yang
 
연결 자료구조
연결 자료구조연결 자료구조
연결 자료구조
Choonghyun Yang
 
자바병렬프로그래밍 9.gui 애플리케이션
자바병렬프로그래밍 9.gui 애플리케이션자바병렬프로그래밍 9.gui 애플리케이션
자바병렬프로그래밍 9.gui 애플리케이션
Choonghyun Yang
 
그림으로 공부하는 오라클 구조
그림으로 공부하는 오라클 구조그림으로 공부하는 오라클 구조
그림으로 공부하는 오라클 구조
Choonghyun Yang
 
Http 완벽가이드(3장 http 메시지)
Http 완벽가이드(3장 http 메시지)Http 완벽가이드(3장 http 메시지)
Http 완벽가이드(3장 http 메시지)
Choonghyun Yang
 
Http 완벽 가이드(2장 url과 리소스)
Http 완벽 가이드(2장 url과 리소스)Http 완벽 가이드(2장 url과 리소스)
Http 완벽 가이드(2장 url과 리소스)
Choonghyun Yang
 
게이트단의 보안
게이트단의 보안게이트단의 보안
게이트단의 보안
Choonghyun Yang
 
Express 프레임워크
Express 프레임워크Express 프레임워크
Express 프레임워크
Choonghyun Yang
 
Bootstrap
BootstrapBootstrap
Bootstrap
Choonghyun Yang
 
아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a
Choonghyun Yang
 
하둡관리
하둡관리하둡관리
하둡관리
Choonghyun Yang
 
Hadoop io part2
Hadoop io part2Hadoop io part2
Hadoop io part2
Choonghyun Yang
 
Atom
AtomAtom
다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화
Choonghyun Yang
 

More from Choonghyun Yang (20)

Maven build for 멀티프로젝트 in jenkins
Maven build for 멀티프로젝트 in jenkins Maven build for 멀티프로젝트 in jenkins
Maven build for 멀티프로젝트 in jenkins
 
데이터 모델링
데이터 모델링데이터 모델링
데이터 모델링
 
Spring boot actuator
Spring boot   actuatorSpring boot   actuator
Spring boot actuator
 
Spring boot 5장 cli
Spring boot 5장 cliSpring boot 5장 cli
Spring boot 5장 cli
 
Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)
 
자료구조 – 트리 (Tree)
자료구조 – 트리 (Tree)자료구조 – 트리 (Tree)
자료구조 – 트리 (Tree)
 
자료구조 큐
자료구조 큐자료구조 큐
자료구조 큐
 
연결 자료구조
연결 자료구조연결 자료구조
연결 자료구조
 
자바병렬프로그래밍 9.gui 애플리케이션
자바병렬프로그래밍 9.gui 애플리케이션자바병렬프로그래밍 9.gui 애플리케이션
자바병렬프로그래밍 9.gui 애플리케이션
 
그림으로 공부하는 오라클 구조
그림으로 공부하는 오라클 구조그림으로 공부하는 오라클 구조
그림으로 공부하는 오라클 구조
 
Http 완벽가이드(3장 http 메시지)
Http 완벽가이드(3장 http 메시지)Http 완벽가이드(3장 http 메시지)
Http 완벽가이드(3장 http 메시지)
 
Http 완벽 가이드(2장 url과 리소스)
Http 완벽 가이드(2장 url과 리소스)Http 완벽 가이드(2장 url과 리소스)
Http 완벽 가이드(2장 url과 리소스)
 
게이트단의 보안
게이트단의 보안게이트단의 보안
게이트단의 보안
 
Express 프레임워크
Express 프레임워크Express 프레임워크
Express 프레임워크
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a
 
하둡관리
하둡관리하둡관리
하둡관리
 
Hadoop io part2
Hadoop io part2Hadoop io part2
Hadoop io part2
 
Atom
AtomAtom
Atom
 
다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화
 

Git