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
Git
The End

More Related Content

PDF
[기초] GIT 교육 자료
PDF
Git tutorials
PDF
Git 과 GitHub 를 이용한 버전관리와 협업 - 2주차A - 비교하기와 되돌리기
PPTX
Git 분산버전관리 시스템(1)
PDF
Git 기본개념과 사용법 그리고 어플리케이션
PPTX
git, 이해부터 활용까지
PPTX
How to patch linux kernel
PDF
버전관리시스템 종류와 소개
[기초] GIT 교육 자료
Git tutorials
Git 과 GitHub 를 이용한 버전관리와 협업 - 2주차A - 비교하기와 되돌리기
Git 분산버전관리 시스템(1)
Git 기본개념과 사용법 그리고 어플리케이션
git, 이해부터 활용까지
How to patch linux kernel
버전관리시스템 종류와 소개

What's hot (20)

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

Similar to Git (20)

PPTX
PPTX
PPTX
Git의 개념과 사용
PPTX
Git basic2 chaos
PDF
Git: A Motivating Introduction
PDF
svn 능력자를 위한 git 개념 가이드
PPT
Git from google techtalks by Randal
PDF
소스트리(SourceTree)로 배우는 Git 사용법
PDF
git-workflow
PDF
Git을 조금 더 알아보자!
PDF
About Git_2017.08.31 aug 투씨드 (박재석)
PPTX
[Atlassian in 부산]Git을 이용한 형상관리 전략_투씨드
PPTX
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
PPTX
오픈소스GIS 개발 일반 강의자료
PDF
[T아카데미] 비개발자를 위한 Git과 Github Page 블로그 만들기
PDF
Why use git
PDF
Git Merge - 여러 브랜칭 시나리오 소개: 2022년 7월 8일 Git 세미나
PDF
Git Tutorial
PDF
해커스 가이드 투 깃
PPTX
Git lecture2
Git의 개념과 사용
Git basic2 chaos
Git: A Motivating Introduction
svn 능력자를 위한 git 개념 가이드
Git from google techtalks by Randal
소스트리(SourceTree)로 배우는 Git 사용법
git-workflow
Git을 조금 더 알아보자!
About Git_2017.08.31 aug 투씨드 (박재석)
[Atlassian in 부산]Git을 이용한 형상관리 전략_투씨드
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
오픈소스GIS 개발 일반 강의자료
[T아카데미] 비개발자를 위한 Git과 Github Page 블로그 만들기
Why use git
Git Merge - 여러 브랜칭 시나리오 소개: 2022년 7월 8일 Git 세미나
Git Tutorial
해커스 가이드 투 깃
Git lecture2
Ad

More from Choonghyun Yang (20)

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

Git