Skip to main content
©Gabia Inc. All Rights Reserved
git workflow
프론트엔드개발팀김인숙
목차 01
02
03
svn과git의차이점
git주요명령어
gitworkflow
Page no. 2
Page no. 3
버전 관리, 무엇으로 하고 있나요?
Subversion
지금은,
Page no. 4
앞으로 git으로 바뀔 겁니다.
svn도 버전 관리고 git도 버전 관리인데 왜 바꿔야 할까요?
svn과 git의 차이점
Page no. 5
Page no. 6
git과 svn은 저장소의 위치가 다릅니다.
svn
중앙저장소
로컬저장소
git
Page no. 7
git은 내 컴퓨터에서만 버전 관리가 되는 건가요?
Remote Repository
다른 사람들과 작업을 할 수 있게 해줍니다.
Page no. 8
원격저장소에 작업 내용을 어떻게 공유할까요?
원격저장소
로컬저장소 로컬저장소에 작업 내용 commit
push
협업을 위해 원격저장소에 push
Page no. 9
svn은 중앙집중식 버전 관리(CVCS)입니다.
 관리자는 누가 무엇을 할지 꼼꼼하게 관리할 수 있습니다.
 중앙 서버가 다운되면 아무도 협업할 수 없습니다..
Computer A 저장소
Page no. 10
git은 분산 버전 관리(DVCS)입니다.
 커밋속도가 빠릅니다.
 로컬저장소에 커밋을 하므로 커밋에 부담이 없습니다.
 원격저장소와 연결이 끊겨도 버전 관리는 계속됩니다.
 원격저장소에 문제가 생겨도 원격저장소에 연결되었던 로컬저장소로 복원이 가능합니다.
Computer A 원격
저장소
로컬
저장소
Page no. 11
스테이지 영역(또는 인덱스)는 로컬저장소 커밋 전의 단계입니다.
Working
Directory
Staging
Area
HEAD
Stage Fixes
Commit
Checkout the Project
 워킹 디렉터리에서 파일을 수정합니다.
 Staging Area에 파일을 Stage해서 커밋할 스냅샷을 만든다.
 Staging Area에 있는 파일들을 커밋해서 git 디렉터리에 영구적인 스냅샷을 저장합니다.
Staging
Area
Page no. 12
Staging Area에 파일 Stage, commit
Computer A 원격
저장소
로컬
저장소
git add git commit git push
git commit -a
Page no. 13
원격저장소에서 다른 작업자의 작업 내용을 내려받으려면
Computer A 로컬
저장소
git merge git fetch
git pull
원격
저장소
Page no. 14
svn은 각 파일의 변화를 저장합니다.
Checkins Over time
Version 1 Version 2 Version 3 Version 4 Version 5
File A △1 △ 2
File B △ 1 △ 2
△ 1 △ 2 △ 3File C
 기초가 되는 파일과 함께 모든 변경 내역을 내려 받습니다.
Page no. 15
git은 시간 순으로 프로젝트의 스냅샷을 저장합니다.
Checkins Over time
File A A1 A1 A2 A2
File B B B B1 B2
File C C1 C2 C3 C3
Version 1 Version 2 Version 3 Version 4 Version 5
 파일이 달라지지 않았다면 성능을 위해 파일을 새로 저장하지 않습니다.
Page no. 16
svn과 git의 차이점 요약
1. 저장소의 위치가 다르며 로컬저장소가 존재합니다. (분산 처리, 안전, 빠른 속도)
2. 커밋 이전에 스테이지 영역에 추가하는 과정이 있습니다. (커밋 대상의 분리)
3. 각각의 버전을 스냅샷으로 저장합니다.
4. 스냅샷이 있기에 브랜치도 자유롭게 만들 수 있습니다.
git 주요 명령어
Page no. 17
Page no. 18
새로운 저장소 만들기
git init
폴더를 만들고 그 안에서
새로운 git 저장소 생성 (.git)
파일을 추가하고 커밋
master
HEAD
Page no. 19
저장소 받아오기
git clone /로컬 /저장소/경로
로컬 저장소를 복제하려면
원격 서버의 저장소를 복제하려면
git clone 사용자명@호스트:/원격/저장소/경로
Page no. 20
추가와 확정
git add <파일 이름>
git add *
스테이징 영역에 추가하려면
변경 내용을 확정하려면
git commit –m “이번 확정본에 대한 설명”
Page no. 21
변경 내용 발행 하기
git push origin master
원격 저장소에 변경 내용을 올리려면
기존에 있던 원격저장소를 복제한 것이 아니라면
git remote add origin <원격 서버 주소>
Page no. 22
브랜치 만들기/브랜치 이동
git checkout –b develop
Develop이라는 이름의
브랜치를 만들고 이동
Master로 돌아오기
git checkout master
master
HEAD
develop
master
HEAD
develop
Page no. 23
갱신하고 병합 하기
git pull
로컬저장소를 원격저장소에 맞춰 갱신
다른 브랜치의 변경 내용을 현재 브랜치에 병합하려면
git merge <가지 이름>
master
master
HEADdevelop HEADdevelop
master
Page no. 24
브랜치 삭제/원격저장소 전송
git branch –d develop
Develop 브랜치를 삭제
원격저장소로 브랜치 전송하기
git push origin develop
master
HEAD
Page no. 25
꼬리표 달기 / 비교하기
git tag 1.0.0 1b2e1d63ff
새 버전을 발표할 때마다 꼬리표를 달려면
변경 내용을 병합하기 전에 비교하기
git diff <원 브랜치 > <비교 대상 브랜치>
Page no. 26
변경 내용 되돌리기
git reset HEAD~1
한 커밋 전으로 돌아가려면
해당 커밋을 되돌리는 커밋을 새로 생성하려면
git revert
Page no. 27
이외에 명령어를 확인하려면
git help
git help <command>
Page no. 28
Svn과 git명령어 비교
조작 Git Subversion
저장소의 복제 git clone svn checkout
커밋 git commit svn commit
커밋의 상세내용을 확인하고 싶다 git show svn cat
상태 확인 git status svn status
변경 내용 확인 git diff svn diff
로그 확인 git log svn log
추가 git add svn add
이동 git mv svn mv
삭제 git rm svn rm
변경 취소 git checkout / git reset svn revert
브랜치 작성 git branch svn copy
브랜치의 전환 git checkout svn switch
병합 git merge svn merge
태그 작성 git tag svn copy
변경 사항 업데이트 git pull / git fetch svn update
원격 저장소에 반영 git push svn commit
무시할 파일 목록 .gitignore .svnignore
Page no. 29
.gitignore로 버전관리 제외하기
node_modules/
hiworks-beta/
yarn.lock
.nuxt/
.git
 커밋에 포함하지 않기 위한 규칙을 리포지터리 최상위 파일에 작성
 .gitignore로 파일 이름 저장
Page no. 30
SourceTree
git workflow
Page no. 31
Page no. 32
Development workflow - 현행
master
dev1
dev2
인사관리 개발
전자결재 개발
Inmail
copy
인메일 테스트
bugfix
개발
서비스
테스트베드
bugfix bugfix bugfix
Page no. 33
Development workflow - 개선
master
hotfix
develop
eric
Stage
bugfix
인사관리 개발
Stage 배포 및 테스트
최종 버전 런칭
develop#1
inmail
Page no. 34
참고자료
1. Pro Git 2판
2. SVN 능력자를 위한 git 개념 가이드
3. Git 간편가이드
Thank you