SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
Git
하늘소
24기 윤승용
버전관리
버전관리?
파일의 변화를 시간에 따라 기록하여
과거 특정 시점의 버전을 다시 불러올 수 있는 시스템
VCS (Version Control System)라고 함
새내기의 프로그래밍 첫 걸음
참여 인원 1명, 파일 1개, 코드 6줄, 5분 소요
모든 실수를 바로 잡을 수 있는 만능 키
CTRL Z+
개인 프로젝트
참여 인원 1명, 파일 5개 이상, 코드 1,000줄 내외, 4-5시간 소요
팀 프로젝트
참여 인원 4명, 파일 10개 이상, 코드 5,000줄 내외, 1개월 소요
구글 플레이 출시용 프로젝트 DTRO
참여 인원 1명, 파일 39개, 코드 9,312줄, 3개월 소요
YooiiStudios 에서 맡은 첫 프로젝트 Sketch Kit
참여 인원 4명, 파일 293개, 코드 50,856줄, 10개월 소요
YooiiStudios 에서 진행 중인 프로젝트 Swish
참여 인원 3명, 파일 610개, 코드 145,342줄, 10개월 소요
‘Ctrl+Z’ 로는 한계가 있음
CTRL Z+
디렉토리로 파일 복사해서 관리
로컬 VCS
CVCS (Central Version Control System)
중앙 집중식 버전 관리
대표적인 CVCS : SVN
DVCS (Distributed Version Control System)
분산 버전 관리
대표적인 DVCS : Git
Git의 역사
2005년생
리눅스의 아버지 ‘리누즈 토발즈’
Git의 목표
• 빠른 속도
• 단순한 구조
• 비선형적 개발 (동시성)
• 완벽한 분산
• Linux 커널 같은 대형 프로젝트에도 활용할 수 있어함 (속도, 크기)
Git vs SVN
Git의 기초
기존 VCS의 데이터 관리
Git과 다른 VCS와 가장 큰 차이점은 ‘스냅샷’
거의 대부분의 명령은 로컬에서 이루어짐
GitSVN
Repository
local
Repository
local
Local
Repository
commit
Stage 영역이 있음
Git의 활용
용어 정리
• Commit : 수정 내역을 사용자 기준 단위로 기록 (보통 1개의 기능 단위)
• Branch : 내 원래 소스코드와 독립된 작업 공간, 여기서 무슨 짓을 해도 괜찮음
• CheckOut : Branch간의 이동
• Merge : Branch와 Branch를 병합
시간표 짜는 프로그램을 만들어 보자
Git에는 Default로 Master라는 Branch가 있다
Master
HEAD
Commit은 Branch에 기록된다
Master
Commit 1 : 프로젝트 초기 세팅
Commit 2 : 시간표 추가 기능 구현
Commit 3 : 시간표 수정 기능 구현
HEAD
기존에 코드는 안전하게 놔두고,
시간표 알람이 기능을 만들고 싶다
Alarm이라는 새 Branch를 만들어 작업
Alarm
Master
Commit 1 : 프로젝트 초기 세팅
Commit 2 : 시간표 추가 기능 구현
Commit 3 : 시간표 수정 기능 구현
Commit 4 : 알람 기능 구현
HEAD
만약, Alarm 에서 작업 중,
Master 에서 수정할 일이 생김
Master를 Checkout 한 뒤 수정 작업
Alarm
Master
Commit 1 : 프로젝트 초기 세팅
Commit 2 : 시간표 추가 기능 구현
Commit 3 : 시간표 수정 기능 구현
Commit 4 : 알람 기능 구현
HEAD
알람 기능이 제대로 동작도 안하고,
코드도 더럽고 때려치우고 싶다
Master로 돌아오고, Alarm 삭제
Alarm
Master
Commit 1 : 프로젝트 초기 세팅
Commit 2 : 시간표 추가 기능 구현
Commit 3 : 시간표 수정 기능 구현
Commit 4 : 알람 기능 구현
HEAD
Alarm 에서 작업 한 기능이 성공적이고,
원본 코드와 합쳐도 될 것 같다
Alarm을 Master로 Merge
Alarm
Master
Commit 1 : 프로젝트 초기 세팅
Commit 2 : 시간표 추가 기능 구현
Commit 3 : 시간표 수정 기능 구현
Commit 4 : 알람 기능 구현
HEAD
Remote Repository를 통해 백업 및 협업을 하기 위한
Push / Pull 기능
code Local
repo
Remote
repo
Push
code Local
repo
Remote
repo
FetchMerge
Pull= Fetch à Merge
해당 작업을 반복하고, 프로젝트를 진행해 나가면..
실제 개발에서 대중적으로 사용하는 Branch 관리 기법
Git 쉽게 활용하기
Git Remote Repository Service
여러 협업 Tool들과 연동 가능
추가로, GitHub는 멋진 OpenSource가 많음
구현하기 힘든 이슈는 GitHub를 찾아볼 것
GUI Tool을 활용
Git 기능들을 쉽게 사용 가능
수정 사항들을 쉽게 파악 할 수 있음
More about Git
• Git Official Website : https://git-scm.com
• Git-Flow : https://github.com/nvie/gitflow

Weitere ähnliche Inhalte

Was ist angesagt?

Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsLee Hanxue
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to gitEmanuele Olivetti
 
svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드Insub Lee
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHubNicolás Tourné
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hubVenkat Malladi
 
Git Introduction Tutorial
Git Introduction TutorialGit Introduction Tutorial
Git Introduction TutorialThomas Rausch
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsCarl Brown
 
Git and Github slides.pdf
Git and Github slides.pdfGit and Github slides.pdf
Git and Github slides.pdfTilton2
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notesglen_a_smith
 
Introduction to GitHub
Introduction to GitHubIntroduction to GitHub
Introduction to GitHubNishan Bose
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기KTH, 케이티하이텔
 

Was ist angesagt? (20)

Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to git
 
svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드
 
git and github
git and githubgit and github
git and github
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
Introduction To Git
Introduction To GitIntroduction To Git
Introduction To Git
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
 
Git and Github Session
Git and Github SessionGit and Github Session
Git and Github Session
 
Git Introduction Tutorial
Git Introduction TutorialGit Introduction Tutorial
Git Introduction Tutorial
 
Git and github 101
Git and github 101Git and github 101
Git and github 101
 
Git training v10
Git training v10Git training v10
Git training v10
 
Git & GitHub for Beginners
Git & GitHub for BeginnersGit & GitHub for Beginners
Git & GitHub for Beginners
 
Basic Git Intro
Basic Git IntroBasic Git Intro
Basic Git Intro
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and Concepts
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Git and Github slides.pdf
Git and Github slides.pdfGit and Github slides.pdf
Git and Github slides.pdf
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
 
Introduction to GitHub
Introduction to GitHubIntroduction to GitHub
Introduction to GitHub
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기
 
Git basics
Git basicsGit basics
Git basics
 

Ähnlich wie Git이란 (Git 소개 및 기초 이론)

[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
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기Chris Ohk
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규ChangKyu Song
 
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습 [숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습 Soongsil University
 
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Daum DNA
 
Basic study 1회차
Basic study 1회차Basic study 1회차
Basic study 1회차Seonmun Choi
 
테스팅을위한선행조건 명세
테스팅을위한선행조건 명세테스팅을위한선행조건 명세
테스팅을위한선행조건 명세규동 최규동
 
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기Youngbin Han
 
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...Byunghyun Ban
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법복연 이
 
오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료BJ Jang
 
200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의 200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의 Joohyun Han
 
Svn 사용하기
Svn 사용하기Svn 사용하기
Svn 사용하기Jung-Ho Kim
 
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬Joohyun Han
 
깃허브 시작하기
깃허브 시작하기깃허브 시작하기
깃허브 시작하기진태 이
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료지원 정
 
GitHub 실습 교육
GitHub 실습 교육GitHub 실습 교육
GitHub 실습 교육승엽 신
 

Ähnlich wie Git이란 (Git 소개 및 기초 이론) (20)

[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)
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
 
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습 [숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
 
Why use git
Why use gitWhy use git
Why use git
 
Git lecture1
Git lecture1Git lecture1
Git lecture1
 
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기
 
Basic study 1회차
Basic study 1회차Basic study 1회차
Basic study 1회차
 
테스팅을위한선행조건 명세
테스팅을위한선행조건 명세테스팅을위한선행조건 명세
테스팅을위한선행조건 명세
 
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
 
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
 
오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료
 
200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의 200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의
 
Svn 사용하기
Svn 사용하기Svn 사용하기
Svn 사용하기
 
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
 
깃허브 시작하기
깃허브 시작하기깃허브 시작하기
깃허브 시작하기
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 
GitHub 실습 교육
GitHub 실습 교육GitHub 실습 교육
GitHub 실습 교육
 

Git이란 (Git 소개 및 기초 이론)