Git+, Git 조금 더 배워보기

19
2013. 11. elegantcoder@ 핸드스튜디오 Git + blame, log, rebase, git-flow

Transcript of Git+, Git 조금 더 배워보기

Page 1: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

Git+blame, log, rebase, git-flow

Page 2: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

Blame

Page 3: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

Blame: 비난하다

• svn 에서는 annotate = praise = blame

Page 4: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

Blame은..

• blame 은 코드를 라인별로 평가할 수 있는 도구

• 이 라인을 누가/언제 변경한거지?

• blame + log 로 라인의 변화를 알아낼 수 있음

Page 5: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

tig: blame 이 쉬워진다

Page 6: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

Rebase

Page 7: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

Merge양쪽 커밋을 모아 새로운 커밋이 생성됨.

커밋끼리 합침. Merge branch ..

masterdevelop

Page 8: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

Rebase커밋이 다른 브랜치로 합쳐짐 변경사항을 떼어다 붙임(patch)

masterdevelop

Page 9: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

Rebase 의 다른 기능들

• Interactive 모드를 사용하면… (git rebase -i)

• 이전,다음 커밋을 합치기 (Squash)

• 커밋을 지우기

• 커밋 메시지를 다시 쓰기 (Edit)

Page 10: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

커밋 옮기기• 실수로 master 브랜치에 커밋했다. develop 에 옮겨보자.

(master, develop 모두 푸시하지 않은 상태)

• 1. develop 브랜치를 체크아웃

• 2. master 브랜치의 실수한 커밋을 cherry-pick 으로 develop 에 붙임

• 3. master 브랜치 체크아웃

• 4. master 브랜치에 실수한 커밋 삭제 (rebase 이용)

Page 11: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

git-flow 활용

Page 12: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

Time

release branches masterdevelop hotfixes

feature branches

Feature for future release

Tag 1.0

Major feature for next release

From this point on, “next release” means the release after 1.0

Severe bug fixed for

production: hotfix 0.2

Bugfixes from rel. branch may be

continuously merged back into

develop

Tag 0.1

Tag 0.2

Incorporate bugfix in develop

Only bugfixes!

Start of release branch for

1.0

Page 13: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

개발 = develop개발은 develop 브랜치 master 는 개발시에 “절대” 건드리지 말 것

masterdevelop

Page 14: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

기능/결함은 feature 브랜치

각 기능단위로 feature 브랜치를 생성해 작업.

작업 후 develop 에 병합 사소한 수정 외에 develop 에서 직접 개발 금지

feature branches develop

Page 15: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

Release 브랜치“메이저 또는 마이너 버전 적용 vX.Y.0”

릴리즈 과정에서 나타나는 변경을 커밋 (버전이름 변경, 빌드 날짜, Change log ..) 사소한 버그 수정

release branchesdevelopfeature

branches master

Page 16: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

Release 브랜치릴리즈 커밋이 끝나면 master, develop 에 Release 브랜치 병합. 명합된 master 를 production 서버로

release branchesdevelopfeature

branches master

Page 17: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

긴급한 결함은 hotfix

“패치버전 적용 vx.y.Z” 긴급한 결함 - 다음 릴리즈를 기다릴 수 없을만큼 중대한 문제.

결함을 hotfix 로 처리한 후 develop, master 에 병합

hotfixes masterdevelop

Page 18: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

롤백release - master 의 merge commit 을 Reverse commit. Reverse commit 후 다시 릴리즈 절차

release masterdevelop hotfixes

Page 19: Git+, Git 조금 더 배워보기

2013. 11.elegantcoder@핸드스튜디오

감사합니다