SlideShare a Scribd company logo
1 of 31
Git,
이해부터 활용까지
made by jylee 1
made by jylee 2
- 프로그램의 변경 이력을 관리하는 소프트웨어
- 종류 : SVN, Git, Mercurial, Bazaar 등
- 주로 SVN과 Git을 사용
버전 관리 프로그램이란?
made by jylee 3
원격 저장소
로컬 저장소 원격 저장소
사용자 PC
사용자 PC
파일
파일
commit
commit push
SVN과 git의 비교
made by jylee 4
SVN git
중앙 집중 모델 분산 개발 모델
소규모 시스템 적합 대규모 시스템 적합
간단한 기능과 간단한 조작법 높은 오픈 소스 활용도와 다양한 기능
브랜치 merge작업의 부담이 큼 Commit 할 때 메세지의 강제성
저장소 서버의 지속적 관리 필요 사설저장소 이용에 대한 비용 발생
안정된 네트워크 환경 필요 학습 필요
SVN과 git의 비교
made by jylee 5
Git의 기본 개념-저장소
made by jylee 6
- 작업 트리 : 실제 물리적인 파일 요소
- 인덱스 : 준비 영역(staging area) 역할로 가상의 공간 (쉽게 현재 작업 중인 IDE 공간)
- 저장소 : 로컬 저장소로 HEAD로 최종 확정본
Git의 기본 개념-저장영역
made by jylee 7
- Git을 사용하는 프로젝트를 지원하는 웹 기반의 호스팅 서비스 (github 외, bitbucket, gitLab 등)
- Git의 구성요소 중 원격 저장소를 관리하는 서버
- 개발자들의 소셜 네트워크 & 오픈 소스 공유 커뮤니티 라고도 불림
로컬 저장소원격 저장소
사용자 PC
파일
commitpush
Pull
Git tool-github
made by jylee 8
- Clone : 개인 저장소를 사용자PC에 복제하는 기능 (최초 한번)
- Fork : Github 기반의 오픈된 저장소를 개인의 저장소로 복제해오는 기능
- Pull Request : 복제한 저장소의 주인에게 복사한 저장소 내용 merge 요청
- 위의 기능들도 인하여 git을 이용한 오픈 소스 활용과 오픈 소스 프로젝트 참가율 상승
로컬 저장소원격 저장소
사용자 PC
파일
commit
push
Pull
원격 저장소
개인 저장소오픈 저장소
Pull request
fork
Git tool-github-Clone & Fork & Pull Request
clone
made by jylee 9
Git tool-기능 실행
console GUI Tool
made by jylee 10
Git 주요 기능-기본
SVN git
commit
Commit (로컬 저장소)
Push (원격 저장소)
update Pull
checkout Clone
made by jylee 11
- 원격 저장소의 데이터를 로컬에 가져오기만 하는 기능
- ‘FETCH_HEAD’이름의 브랜치로 로컬 저장소에 가져옴
- Fetch + merge = pull
Git 주요 기능-fetch
made by jylee 12
- 특정 commit의 내용을 삭제하는 기능
- Commit에 대한 이력자체를 삭제한 것이 아닌
새로운 commit을 생성하여 변경한 내용까지 기록
Git 주요 기능-revert (commit 이력 변경)
made by jylee 13
- 특정 commit 이후의 commit의 이력을 삭제하는 기능
- 옵션에 따라 인덱스, 작업트리 변경 가능
Git 주요 기능-reset (commit 이력 변경)
옵션 명 HEAD의 위치 인덱스 작업 트리
soft 변경함 변경 안 함 변경 안 함
Mixed 변경함 변경함 변경 안 함
Hard 변경함 변경함 변경함
Soft : commit만 되돌리고 싶을 때
Mixed : 변경한 인덱스의 상태를 원래대로 되돌리고 싶을 때
Hard : 최근의 commit을 완전히 버리고 이전의 상태로 되돌리고 싶을 때
made by jylee 14
- Commit은 이력을 남기는 중요한 작업
- Commit에 대한 메시지 작성은 필수 작업
- Git 권장 commit 메시지 형식
1번째 줄 : 커밋 내의 변경 내용을 요약
2번째 줄 : 빈 칸
3번째 줄 : 변경한 이유
Git 주요 기능-commit 메세지
made by jylee 15
- 버전 관리와 같은 S/W 릴리즈 지점
또는 별도로 표시할 commit에 생성
- Lightweight Tag : 특정 commit에 대한 태그
- Annotated Tag : 주석 첨부 버전 태그
- 일반적인 push 명령으로는 원격 저장소에 공유 안되므로별도의 tag push 작업 필요
Git 주요 기능-tag
made by jylee 16
- 같은 코드를 바탕으로 각자 다른 작업을 수행하기 위한 독립적인 공간
여러 명이서 동시에 작업 할 때(각자 다른 작업/개발) 다른 사람의 작업에 영향이 없도록
메인 브랜치(같은 코드)에서 개인 전용 브랜치(독립적인 공간) 생성
Git 주요 기능-브랜치(Branch)
made by jylee 17
Git 주요 기능-브랜치(Branch)
- 다른 브랜치와 병합(Merge) 가능
- 브랜치로 작업 기록을 남기기 때문에 세세한 이력 관리 가능
made by jylee 18
rebase
merge
Git 주요 기능- merge & rebase (브랜치 통합)
브랜치의 commit 등 변경 이력이 모두 그대로 남아 이력이 복잡해짐
브랜치의 commit 이력을 변경(통합)시켜 이력이 단순해짐
* 메인(마스터) 브랜치에 토픽(서브) 브랜치를 불러올 경우에는 토픽 브랜치를 rebase 후 merge 하는 등, Merge와 Rebase를 상황에 따라 혼용하여 사용하기를 권장
made by jylee 19
- 다른 브랜치에서 지정한 커밋을 복사하여 현재 브랜치로 가져오는 기능
- 특정 브랜치에 잘못 추가한 commit을 올바른 브랜치에 옮기거나
다른 브랜치의 commit을 현재 브랜치에도 추가하고 싶을 때 사용
Git 주요 기능-cherry-pick
made by jylee 20
- 작업트리에 unstaged 파일들을 백업하고, 작업트리를 깨끗한 상태, 즉 HEAD의 상태로 만드는 기능
- 현재 작업을 일시적으로 저장하되 git의 상태 변화를 주고 싶지 않을 때 사용하는 기능
예) A작업 날림코딩 중 급하게 B작업 확인 해야 하는데 날림코딩이라 commit+pull 하기 불편할 때
Git 주요 기능-Stash
made by jylee 21
Git 관리 전략-git flow
- Git을 활용하기 위해서는 소스 버전 관리 및 빌드배포 전략을
확립하고 팀원간의 공유되어야 하며 학습-체득화 되어야 함
made by jylee 22
Git 관리 전략-git flow-주요 브랜치
- Origin/master : 먼저 배포했거나 곧 배포할 코드
- Origin/develop : 다음에 배포할 것을 개발하는 코드 (자동 빌드 브랜치)
- Master 브랜치로 merge하는 것은 새 버전 배포를 의미
made by jylee 23
Git 관리 전략-git flow-보조 브랜치
- Feature 브랜치 : 토픽 브랜치
- Release 브랜치 : 제품 배포를 준비하는 브랜치
- Hotfix 브랜치 : 운영 버전에 생긴 버그 해결을 위한 브랜치
made by jylee 24
Git 관리 전략-git flow-보조 브랜치-feature
- 상위 브랜치 : develop
- Merge 할 브랜치 : develop
- 브랜치 명명 규칙 : master, develop, release-*, hotfix-* 를 제외한 것
- 개발자 저장소에만 존재하는 브랜치
origin에는 push 하지 않음
해당 브랜치의 목표 기능을 개발
기능 개발이 완성되면 develop 브랜치로 merge
- Merge 할 때에 텅 빈 commit 개체를 추가하는 것을 권장
made by jylee 25
Git 관리 전략-git flow-보조 브랜치-release
- 상위 브랜치 : develop
- Merge 할 브랜치 : develop, master
- 브랜치 명명 규칙 : release-*
- 제품 배포를 준비하는 브랜치
develop 브랜치가 배포할 수 있는 상태가 되었을 때 생성
메타데이터(버전 넘버, 빌드 일정) 준비 와 사소한 버그 수정
release 브랜치 생성 후 버전 넘버가 붙는다면 ‘진짜’ 배포하는 단계
made by jylee 26
Git 관리 전략-git flow-보조 브랜치-release
- ① release 브랜치→master브랜치에 merge
② master 브랜치에 버전 Tag 생성 및 commit
소스 코드내의 버전 정보 업데이트
③ release브랜치→ develop 브랜치에 merge
④ 배포 완료 후 release 브랜치 삭제
made by jylee 27
Git 관리 전략-git flow-보조 브랜치-hotfix
- 상위 브랜치 : master
- Merge 할 브랜치 : develop, master
- 브랜치 명명 규칙 : hotfix-*
- 이미 배포한 운영 버전에 생긴 문제를 해결하기 위한 브랜치
hotfix 브랜치 생성 후 버전 넘버 변경
release 브랜치와의 계획적/우발적의 차이
made by jylee 28
Git 관리 전략-git flow-보조 브랜치-hotfix
- ① 버그 해결 commit 이후 master 브랜치에 merge
② master 브랜치에 버전 Tag 생성 및 commit
소스 코드내의 버전 정보 업데이트
③ hotfix브랜치→ develop 브랜치에 merge
release 브랜치가 아직 삭제되지 않았다면 release 브랜치에도 merge
④ 배포 완료 후 hotfix브랜치 삭제
made by jylee 29
Git 관리 전략-저장소 분리
배포용 저장소
개발용 저장소
made by jylee 30
추천 사이트
Git 공식 사이트 : https://git-scm.com/
Git 간편 가이드 : https://rogerdudler.github.io/git-guide/index.ko.html
Git 입문 유용 사이트 : https://backlogtool.com/git-guide/kr/
Github 공식 사이트 : https://github.com/
성공적인 git 브랜칭 전략 번역본 : http://dogfeet.github.io/articles/2011/a-successful-git-branching-model.html
구글 트렌드 (트렌드 그래프)/ 구글 이미지 (각 로고 관련)
Git 이해 관련 : https://backlogtool.com/git-guide/kr/
Git flow: : http://dogfeet.github.io/articles/2011/a-successful-git-branching-model.html
이미지 출처
made by jylee 31
참고 사이트
https://backlogtool.com/git-guide/kr/
https://opentutorials.org/course/337/2283
http://www.slideshare.net/ibare/dvcs-git
http://www.slideshare.net/einsub/svn-git-17386752
http://noritersand.tistory.com/86
https://www.google.com/trends/explore#q=SVN%2C%20Git%2C%20Mercurial%2C%20Bazaar
http://dimdim.tistory.com/entry/GIT%EC%97%90-%EB%8C%80%ED%95%9C-%EB%82%B4%EC%9A%A9%EC%
http://wit.nts-corp.com/2014/03/25/1153
http://blog.outsider.ne.kr/865
http://blog.outsider.ne.kr/866
http://ohgyun.com/402
http://dogfeet.github.io/articles/2011/a-successful-git-branching-model.html
https://slipp.net/questions/244
http://cfile30.uf.tistory.com/attach/257EAC41530ED8970BE484

More Related Content

What's hot

[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함Ji-Woong Choi
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습BJ Jang
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An IntroductionBehzad Altaf
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGeoff Hoffman
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hubNaveen Pandey
 
Learning git
Learning gitLearning git
Learning gitSid Anand
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to gitEmanuele Olivetti
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash CourseNilay Binjola
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHubNicolás Tourné
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsLee Hanxue
 
はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーSaeko Yamamoto
 

What's hot (20)

Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
 
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습
 
Git training v10
Git training v10Git training v10
Git training v10
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
 
Git real slides
Git real slidesGit real slides
Git real slides
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using Git
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hub
 
Git 101 for Beginners
Git 101 for Beginners Git 101 for Beginners
Git 101 for Beginners
 
Git l'essentiel
Git l'essentielGit l'essentiel
Git l'essentiel
 
git and github
git and githubgit and github
git and github
 
Learning git
Learning gitLearning git
Learning git
 
Tutoriel GIT
Tutoriel GITTutoriel GIT
Tutoriel GIT
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to git
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
Git in 10 minutes
Git in 10 minutesGit in 10 minutes
Git in 10 minutes
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
 
はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダー
 
Git basics
Git basicsGit basics
Git basics
 

Similar to git, 이해부터 활용까지

Git: A Motivating Introduction
Git: A Motivating IntroductionGit: A Motivating Introduction
Git: A Motivating IntroductionJongwook Choi
 
Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Dabi Ahn
 
Git 분산버전관리 시스템(1)
Git 분산버전관리 시스템(1)Git 분산버전관리 시스템(1)
Git 분산버전관리 시스템(1)Hyunjun Roh
 
Git basic2 chaos
Git basic2 chaosGit basic2 chaos
Git basic2 chaosYunkyu Choi
 
Git Tutorial
Git TutorialGit Tutorial
Git TutorialMDLicht
 
Git from google techtalks by Randal
Git from google techtalks by RandalGit from google techtalks by Randal
Git from google techtalks by Randalyagurchoi
 
[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
 
Git branch stregagy & case study
Git branch stregagy & case studyGit branch stregagy & case study
Git branch stregagy & case studyWoo Jin 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
 
[VCS] Git&GitLab_Designer
[VCS] Git&GitLab_Designer[VCS] Git&GitLab_Designer
[VCS] Git&GitLab_DesignerLee Beomho
 
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - TwoseedGit의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - TwoseedAtlassian 대한민국
 

Similar to git, 이해부터 활용까지 (20)

11. git basic
11. git basic11. git basic
11. git basic
 
Git
GitGit
Git
 
Git: A Motivating Introduction
Git: A Motivating IntroductionGit: A Motivating Introduction
Git: A Motivating Introduction
 
Git
GitGit
Git
 
Git
GitGit
Git
 
Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션
 
Git 기본
Git 기본Git 기본
Git 기본
 
Git lecture2
Git lecture2Git lecture2
Git lecture2
 
Git
Git Git
Git
 
Git 분산버전관리 시스템(1)
Git 분산버전관리 시스템(1)Git 분산버전관리 시스템(1)
Git 분산버전관리 시스템(1)
 
Git basic2 chaos
Git basic2 chaosGit basic2 chaos
Git basic2 chaos
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
 
Git from google techtalks by Randal
Git from google techtalks by RandalGit from google techtalks by Randal
Git from google techtalks by Randal
 
Git command
Git commandGit command
Git command
 
[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)
 
Git branch stregagy & case study
Git branch stregagy & case studyGit branch stregagy & case study
Git branch stregagy & case study
 
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 & GitHub
Git & GitHubGit & GitHub
Git & GitHub
 
[VCS] Git&GitLab_Designer
[VCS] Git&GitLab_Designer[VCS] Git&GitLab_Designer
[VCS] Git&GitLab_Designer
 
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - TwoseedGit의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
 

git, 이해부터 활용까지

  • 2. made by jylee 2 - 프로그램의 변경 이력을 관리하는 소프트웨어 - 종류 : SVN, Git, Mercurial, Bazaar 등 - 주로 SVN과 Git을 사용 버전 관리 프로그램이란?
  • 3. made by jylee 3 원격 저장소 로컬 저장소 원격 저장소 사용자 PC 사용자 PC 파일 파일 commit commit push SVN과 git의 비교
  • 4. made by jylee 4 SVN git 중앙 집중 모델 분산 개발 모델 소규모 시스템 적합 대규모 시스템 적합 간단한 기능과 간단한 조작법 높은 오픈 소스 활용도와 다양한 기능 브랜치 merge작업의 부담이 큼 Commit 할 때 메세지의 강제성 저장소 서버의 지속적 관리 필요 사설저장소 이용에 대한 비용 발생 안정된 네트워크 환경 필요 학습 필요 SVN과 git의 비교
  • 5. made by jylee 5 Git의 기본 개념-저장소
  • 6. made by jylee 6 - 작업 트리 : 실제 물리적인 파일 요소 - 인덱스 : 준비 영역(staging area) 역할로 가상의 공간 (쉽게 현재 작업 중인 IDE 공간) - 저장소 : 로컬 저장소로 HEAD로 최종 확정본 Git의 기본 개념-저장영역
  • 7. made by jylee 7 - Git을 사용하는 프로젝트를 지원하는 웹 기반의 호스팅 서비스 (github 외, bitbucket, gitLab 등) - Git의 구성요소 중 원격 저장소를 관리하는 서버 - 개발자들의 소셜 네트워크 & 오픈 소스 공유 커뮤니티 라고도 불림 로컬 저장소원격 저장소 사용자 PC 파일 commitpush Pull Git tool-github
  • 8. made by jylee 8 - Clone : 개인 저장소를 사용자PC에 복제하는 기능 (최초 한번) - Fork : Github 기반의 오픈된 저장소를 개인의 저장소로 복제해오는 기능 - Pull Request : 복제한 저장소의 주인에게 복사한 저장소 내용 merge 요청 - 위의 기능들도 인하여 git을 이용한 오픈 소스 활용과 오픈 소스 프로젝트 참가율 상승 로컬 저장소원격 저장소 사용자 PC 파일 commit push Pull 원격 저장소 개인 저장소오픈 저장소 Pull request fork Git tool-github-Clone & Fork & Pull Request clone
  • 9. made by jylee 9 Git tool-기능 실행 console GUI Tool
  • 10. made by jylee 10 Git 주요 기능-기본 SVN git commit Commit (로컬 저장소) Push (원격 저장소) update Pull checkout Clone
  • 11. made by jylee 11 - 원격 저장소의 데이터를 로컬에 가져오기만 하는 기능 - ‘FETCH_HEAD’이름의 브랜치로 로컬 저장소에 가져옴 - Fetch + merge = pull Git 주요 기능-fetch
  • 12. made by jylee 12 - 특정 commit의 내용을 삭제하는 기능 - Commit에 대한 이력자체를 삭제한 것이 아닌 새로운 commit을 생성하여 변경한 내용까지 기록 Git 주요 기능-revert (commit 이력 변경)
  • 13. made by jylee 13 - 특정 commit 이후의 commit의 이력을 삭제하는 기능 - 옵션에 따라 인덱스, 작업트리 변경 가능 Git 주요 기능-reset (commit 이력 변경) 옵션 명 HEAD의 위치 인덱스 작업 트리 soft 변경함 변경 안 함 변경 안 함 Mixed 변경함 변경함 변경 안 함 Hard 변경함 변경함 변경함 Soft : commit만 되돌리고 싶을 때 Mixed : 변경한 인덱스의 상태를 원래대로 되돌리고 싶을 때 Hard : 최근의 commit을 완전히 버리고 이전의 상태로 되돌리고 싶을 때
  • 14. made by jylee 14 - Commit은 이력을 남기는 중요한 작업 - Commit에 대한 메시지 작성은 필수 작업 - Git 권장 commit 메시지 형식 1번째 줄 : 커밋 내의 변경 내용을 요약 2번째 줄 : 빈 칸 3번째 줄 : 변경한 이유 Git 주요 기능-commit 메세지
  • 15. made by jylee 15 - 버전 관리와 같은 S/W 릴리즈 지점 또는 별도로 표시할 commit에 생성 - Lightweight Tag : 특정 commit에 대한 태그 - Annotated Tag : 주석 첨부 버전 태그 - 일반적인 push 명령으로는 원격 저장소에 공유 안되므로별도의 tag push 작업 필요 Git 주요 기능-tag
  • 16. made by jylee 16 - 같은 코드를 바탕으로 각자 다른 작업을 수행하기 위한 독립적인 공간 여러 명이서 동시에 작업 할 때(각자 다른 작업/개발) 다른 사람의 작업에 영향이 없도록 메인 브랜치(같은 코드)에서 개인 전용 브랜치(독립적인 공간) 생성 Git 주요 기능-브랜치(Branch)
  • 17. made by jylee 17 Git 주요 기능-브랜치(Branch) - 다른 브랜치와 병합(Merge) 가능 - 브랜치로 작업 기록을 남기기 때문에 세세한 이력 관리 가능
  • 18. made by jylee 18 rebase merge Git 주요 기능- merge & rebase (브랜치 통합) 브랜치의 commit 등 변경 이력이 모두 그대로 남아 이력이 복잡해짐 브랜치의 commit 이력을 변경(통합)시켜 이력이 단순해짐 * 메인(마스터) 브랜치에 토픽(서브) 브랜치를 불러올 경우에는 토픽 브랜치를 rebase 후 merge 하는 등, Merge와 Rebase를 상황에 따라 혼용하여 사용하기를 권장
  • 19. made by jylee 19 - 다른 브랜치에서 지정한 커밋을 복사하여 현재 브랜치로 가져오는 기능 - 특정 브랜치에 잘못 추가한 commit을 올바른 브랜치에 옮기거나 다른 브랜치의 commit을 현재 브랜치에도 추가하고 싶을 때 사용 Git 주요 기능-cherry-pick
  • 20. made by jylee 20 - 작업트리에 unstaged 파일들을 백업하고, 작업트리를 깨끗한 상태, 즉 HEAD의 상태로 만드는 기능 - 현재 작업을 일시적으로 저장하되 git의 상태 변화를 주고 싶지 않을 때 사용하는 기능 예) A작업 날림코딩 중 급하게 B작업 확인 해야 하는데 날림코딩이라 commit+pull 하기 불편할 때 Git 주요 기능-Stash
  • 21. made by jylee 21 Git 관리 전략-git flow - Git을 활용하기 위해서는 소스 버전 관리 및 빌드배포 전략을 확립하고 팀원간의 공유되어야 하며 학습-체득화 되어야 함
  • 22. made by jylee 22 Git 관리 전략-git flow-주요 브랜치 - Origin/master : 먼저 배포했거나 곧 배포할 코드 - Origin/develop : 다음에 배포할 것을 개발하는 코드 (자동 빌드 브랜치) - Master 브랜치로 merge하는 것은 새 버전 배포를 의미
  • 23. made by jylee 23 Git 관리 전략-git flow-보조 브랜치 - Feature 브랜치 : 토픽 브랜치 - Release 브랜치 : 제품 배포를 준비하는 브랜치 - Hotfix 브랜치 : 운영 버전에 생긴 버그 해결을 위한 브랜치
  • 24. made by jylee 24 Git 관리 전략-git flow-보조 브랜치-feature - 상위 브랜치 : develop - Merge 할 브랜치 : develop - 브랜치 명명 규칙 : master, develop, release-*, hotfix-* 를 제외한 것 - 개발자 저장소에만 존재하는 브랜치 origin에는 push 하지 않음 해당 브랜치의 목표 기능을 개발 기능 개발이 완성되면 develop 브랜치로 merge - Merge 할 때에 텅 빈 commit 개체를 추가하는 것을 권장
  • 25. made by jylee 25 Git 관리 전략-git flow-보조 브랜치-release - 상위 브랜치 : develop - Merge 할 브랜치 : develop, master - 브랜치 명명 규칙 : release-* - 제품 배포를 준비하는 브랜치 develop 브랜치가 배포할 수 있는 상태가 되었을 때 생성 메타데이터(버전 넘버, 빌드 일정) 준비 와 사소한 버그 수정 release 브랜치 생성 후 버전 넘버가 붙는다면 ‘진짜’ 배포하는 단계
  • 26. made by jylee 26 Git 관리 전략-git flow-보조 브랜치-release - ① release 브랜치→master브랜치에 merge ② master 브랜치에 버전 Tag 생성 및 commit 소스 코드내의 버전 정보 업데이트 ③ release브랜치→ develop 브랜치에 merge ④ 배포 완료 후 release 브랜치 삭제
  • 27. made by jylee 27 Git 관리 전략-git flow-보조 브랜치-hotfix - 상위 브랜치 : master - Merge 할 브랜치 : develop, master - 브랜치 명명 규칙 : hotfix-* - 이미 배포한 운영 버전에 생긴 문제를 해결하기 위한 브랜치 hotfix 브랜치 생성 후 버전 넘버 변경 release 브랜치와의 계획적/우발적의 차이
  • 28. made by jylee 28 Git 관리 전략-git flow-보조 브랜치-hotfix - ① 버그 해결 commit 이후 master 브랜치에 merge ② master 브랜치에 버전 Tag 생성 및 commit 소스 코드내의 버전 정보 업데이트 ③ hotfix브랜치→ develop 브랜치에 merge release 브랜치가 아직 삭제되지 않았다면 release 브랜치에도 merge ④ 배포 완료 후 hotfix브랜치 삭제
  • 29. made by jylee 29 Git 관리 전략-저장소 분리 배포용 저장소 개발용 저장소
  • 30. made by jylee 30 추천 사이트 Git 공식 사이트 : https://git-scm.com/ Git 간편 가이드 : https://rogerdudler.github.io/git-guide/index.ko.html Git 입문 유용 사이트 : https://backlogtool.com/git-guide/kr/ Github 공식 사이트 : https://github.com/ 성공적인 git 브랜칭 전략 번역본 : http://dogfeet.github.io/articles/2011/a-successful-git-branching-model.html 구글 트렌드 (트렌드 그래프)/ 구글 이미지 (각 로고 관련) Git 이해 관련 : https://backlogtool.com/git-guide/kr/ Git flow: : http://dogfeet.github.io/articles/2011/a-successful-git-branching-model.html 이미지 출처
  • 31. made by jylee 31 참고 사이트 https://backlogtool.com/git-guide/kr/ https://opentutorials.org/course/337/2283 http://www.slideshare.net/ibare/dvcs-git http://www.slideshare.net/einsub/svn-git-17386752 http://noritersand.tistory.com/86 https://www.google.com/trends/explore#q=SVN%2C%20Git%2C%20Mercurial%2C%20Bazaar http://dimdim.tistory.com/entry/GIT%EC%97%90-%EB%8C%80%ED%95%9C-%EB%82%B4%EC%9A%A9%EC% http://wit.nts-corp.com/2014/03/25/1153 http://blog.outsider.ne.kr/865 http://blog.outsider.ne.kr/866 http://ohgyun.com/402 http://dogfeet.github.io/articles/2011/a-successful-git-branching-model.html https://slipp.net/questions/244 http://cfile30.uf.tistory.com/attach/257EAC41530ED8970BE484

Editor's Notes

  1. Git은 svn과 같은 버전관리 프로그램입니다. 버전 관리 프로그램이란 프로그램의 변경 이력을 관리하는 소프트웨어로 공동의 파일을 팀 단위로 작업할 때 유용한 스프트웨어입니다 버전관리 프로그램의 종류로는 흔히 알고 있는 svn, git, 머큐리얼 등이 있지만 구글 트렌드 그래프를 보면 git이 점점 대중화 되어가고 있다는 것을 알 수 있습니다.
  2. 이전에 대중화 되어 사용되고 있던 svn과 git을 비교해보면 저장소 구성에 따른 차이가 있습니다. commit 명령어 한번으로 원격저장소에 저장되는 중앙 집중 방식인 svn과 달리 Git은 분산개발방식으로 commit 명령어를 실행하면 내 pc에 있는 로컬 저장소에 저장이되고 push라는 명령어로 원격 저장소에 저장이 됩니다. 쉽게 svn의 commit 절차를 commit과 push로 나눈 것이 git입니다.
  3. svn은 간단한 기능과 조작법으로 쉽게 사용할 수 있으나 브랜치나 merge작업의 부담이 크기때문에 대규모 시스템보다는 소규모 시스템에 적합합니다. 중앙 집중 방식으로 원격 저장소 서버에 문제가 생기면 백업이 어렵기 때문에 지속적인 모니터링과 관리가 필요하며 안정된 네트워크 환경이 필요합니다. git은 분산 개발방식으로 svn보다는 비교적 브랜치나 merge와 네트워크,백업 작업에 대한 부담감이 낮아 대규모 시스템에 적합하지만 다양한 기능때문에 다소 학습비용이 발생하는 편입니다.
  4. git을 이해하기 위해서는 분산개발 방식의 저장소 구조를 알아야합니다. 앞서 설명드렸듯 git은 로컬 저장소와 원격 저장소로 구성되어있습니다. 원격 저장소를 로컬 저장소에 복제하고 작업하다가 다른 개발자와 공유하고 싶을 때 로컬 저장소에서 원격 저장소로 push합니다.
  5. 조금 더 세부적으로 들어가면 물리적인 파일은 작업트리/워킹 디렉토리이고 실제 내가 작업하고 있는 공간은 인덱스입니다. 스테이징 영역이라고도 합니다. 그리고 내 pc안에 존재하는 로컬 저장소가 있습니다. 로컬 저장소에서 마지막 commit 시점을 HEAD라고 부르며, 인덱스에서 HEAD에서의 파일과 내가 작업하는 디렉토리를 비교하여 다른 부분이 있다면 commit을 하라는 빨간 표시가 뜹니다. 인덱스에서는 HEAD와 현재 내가 작업중인 디렉토리를 비교하기 때문에 새로 추가되는 파일을 따로 추가하지않는다면 HEAD에서는 인식을 못하기 때문에 비교대상이 없어 commit 대상에서 제외됩니다. 그렇기 때문에 새로 추가되는 파일은 add 명령어로 추가해야지 인덱스에 등록되어 commit이 가능합니다.
  6. 복잡한 git을 좀 더 편리하고 유용하게 활용할 수 있는 툴은 크게 사설저장소와 명령실행툴로 나뉘어집니다. github은 git을 사용하는 프로젝트를 지원하는 웹 기반의 호스팅 서비스중 가장 대표적인 서비스로, git의 구성 요소 중 원격 저장소를 관리하는 서버이며 활용도에 따라 개발자의 소셜 네트워크, 오픈 소스 공유 커뮤니티라고 불립니다. 그 이유는 github에서 지원하는 fork와 pull Request라는 기능 때문인데, 이 기능으로 타인의 오픈소스를 쉽게 공유하고 참여할 수 있기 때문입니다.
  7. github의 대표적인 기능을 살펴보면 원격 저장소를 사용자 로컬저장소에 복제하는 clone기능이 있습니다. 이 기능은 svn의 checkout 기능과 유사하기때문에 크게 새로운 기능은 아니지만 타인의 오픈 소스를 나의 원격 저장소에 복제하는 fork 라는 기능과 그 복제한 저장소를 타인의 저장소에 commit 요청하는 pull request 기능이 있습니다. 이런 기능을 사용하여 오픈 소스를 내 저장소에 clone하여 기능을 추가 및 수정하는 방법으로 참여율이 상승했습니다.
  8. git의 명령실행 툴로는 콘솔과 GUI툴로 나뉘는데 명령실행 툴은 각자의 OS와 취향에 맞게 선택하면 됩니다. 사내 위키 잠깐 확인하니 거북이git을 추천하기 때문에 거북이git을 사용하면 좋을 것 같습니다.
  9. release브랜치→ develop 브랜치 이유는 릴리즈 브랜치에서 수정한 버그들이 dev에도 반영이 되도록하기 위해
  10. release브랜치→ develop 브랜치 이유는 릴리즈 브랜치에서 수정한 버그들이 dev에도 반영이 되도록하기 위해
  11. release브랜치→ develop 브랜치 이유는 릴리즈 브랜치에서 수정한 버그들이 dev에도 반영이 되도록하기 위해 인 것 처럼 hotfix브랜치 또한 ㅇㅇ
  12. Git관련 웹호스팅 서비스의 fork, pull request 기능을 사용한 저장소 분리