SlideShare a Scribd company logo
1 of 12
Download to read offline
git의 원리
Git이란 무엇인가
Git의 내부 동작
Git Object 예시
목차
Git이란 무엇인가?
분산 버전 관리 시스템
Git은 내용을 주소로 활용하는 컨텐츠 추적 파일 시스템
다양한 브랜치 전략과 워크플로우
Content-addressable Key-Value Storage
• 체크섬 : Git에서 사용하는 가장 기본적인(Atomic) 데이터 단위
• SHA-1 해시를 사용하여 체크섬 생성
• 160 bits = 20 bytes
• 16 진수 문자열 형태로 표현하면 40자
• 8a8363d93e61185f6df18ed61321626be514c7f4
8a
objects
8363d93e61185f6df18ed61321626be514c7f4
└──
.git
버전 관리 시스템 – CVCS / DVCS
백업 어려움, 히스토리 잃음
Git의 킬러 기능 – branch
l 워크플로우
l 스냅샷 & 델타
• 메인 라인 브랜치 개발 모델
• 기능별 브랜치 개발 모델
• 상태 브랜치 모델
• 정기 배포 모델
Git의 내부 동작 - .git
git init
config
description
HEAD
hooks
info
objects
refs
해당 프로젝트에만 적용되는 설정 옵션
클라이언트 훅이나 서버 훅이 위치
.gitignore처럼 무시할 파일의 패턴을 적어두는 곳
현재 체크아웃한 브랜치 정보 저장
커밋 개체의 포인터 저장
모든 컨텐츠를 저장하는 데이터베이스
GitWeb 페이지에 리포지토리에 대한 설명을 표시
Git의 내부 동작 - 명령어
File
System
K-V
Storage
Plumbing
Porcelain
# git commit
# git hash-object
$ echo 'test content' | git hash-object -w --stdin
d670460b4b4aece5915caf5c68d12f560a9fe3e4
→ 40자 길이의 체크섬 해시를 출력
Git 의 내부 구조에 접근할 수 있는 저수준 명령어
l Plumbing 명령어
사용자에게 친숙한 고수준 명령어
l Porcelain 명령어
Git의 내부 동작 – 저장소 구조
Git Object 예시
$ tree .git/objects
$ mkdir git_example
$ cd git_example
$ git init
$ echo "# Git Object" > README.md
$ ls .git
$ tree .git/objects
$ git add README.md
$ ls .git
Git Object 예시
$ git commit -m "first commit"
$ tree .git/objects
$ git cat-file -t 359351
$ git cat-file -t 3fb41d
$ git cat-file -t dda4e6
출처
• Git 공식 홈페이지 Docs - https://git-scm.com/docs
• [Book] ProGit - https://git-scm.com/book/ko/v2
• 스냅샷과 델타 - http://dogfeet.github.io/articles/2012/git-delta.html
• Git 내부 구조- https://medium.com/happyprogrammer-in-jeju/git-%EB%82%B4%EB%B6%80-
%EA%B5%AC%EC%A1%B0%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90-1-%EA%B8%B0%EB%B3%B8-
%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8-81b34f85fe53
• Git 내부 구조- https://it-eldorado.tistory.com/4
• Git 내부 구조- https://coding-groot.tistory.com/68
• Git vs. Mercurial - https://d2.naver.com/helloworld/1011
• Git Object 예시 - https://matthew-brett.github.io/curious-git/git_object_types.html
• 워크플로우 - https://zepel.io/blog/5-git-workflows-to-improve-development
• 단계별 명령어 - https://ndpsoftware.com/git-cheatsheet.html
• 배우기- https://learngitbranching.js.org/?demo=&locale=ko

More Related Content

Similar to 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
 
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - TwoseedGit의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - TwoseedAtlassian 대한민국
 
OSS SW Basics Lecture 06: Software Configuration Management
OSS SW Basics Lecture 06: Software Configuration ManagementOSS SW Basics Lecture 06: Software Configuration Management
OSS SW Basics Lecture 06: Software Configuration ManagementJeongkyu Shin
 
리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기Wooyoung Ko
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규ChangKyu Song
 
EOST2023-이보라-HackYourGitEducation.pptx
EOST2023-이보라-HackYourGitEducation.pptxEOST2023-이보라-HackYourGitEducation.pptx
EOST2023-이보라-HackYourGitEducation.pptxBora Lee
 
Git 분산버전관리 시스템(1)
Git 분산버전관리 시스템(1)Git 분산버전관리 시스템(1)
Git 분산버전관리 시스템(1)Hyunjun Roh
 
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimDeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimGruter
 
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
 
OSS SW Basics Lecture 08: Software Configuration Management (2)
OSS SW Basics Lecture 08: Software Configuration Management (2)OSS SW Basics Lecture 08: Software Configuration Management (2)
OSS SW Basics Lecture 08: Software Configuration Management (2)Jeongkyu Shin
 
Travis CI 에서 CodeBuild 로
Travis CI 에서 CodeBuild 로Travis CI 에서 CodeBuild 로
Travis CI 에서 CodeBuild 로Hyeon Ku Kang
 
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...Amazon Web Services Korea
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해Terry Cho
 
세션5_데보션테크데이_이상근.pdf
세션5_데보션테크데이_이상근.pdf세션5_데보션테크데이_이상근.pdf
세션5_데보션테크데이_이상근.pdfJaesuk Ahn
 
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...Amazon Web Services Korea
 

Similar to Git의 원리 (20)

11. git basic
11. git basic11. git basic
11. git basic
 
[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 basic
Git basicGit basic
Git basic
 
Why use git
Why use gitWhy use git
Why use git
 
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - TwoseedGit의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
Git의 기초 및 Bitbucket을 이용한 Git 코드 협업 - Twoseed
 
OSS SW Basics Lecture 06: Software Configuration Management
OSS SW Basics Lecture 06: Software Configuration ManagementOSS SW Basics Lecture 06: Software Configuration Management
OSS SW Basics Lecture 06: Software Configuration Management
 
리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
 
EOST2023-이보라-HackYourGitEducation.pptx
EOST2023-이보라-HackYourGitEducation.pptxEOST2023-이보라-HackYourGitEducation.pptx
EOST2023-이보라-HackYourGitEducation.pptx
 
Git 분산버전관리 시스템(1)
Git 분산버전관리 시스템(1)Git 분산버전관리 시스템(1)
Git 분산버전관리 시스템(1)
 
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimDeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun 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 투씨드 (박재석)
 
Gitflow ppt
Gitflow pptGitflow ppt
Gitflow ppt
 
OSS SW Basics Lecture 08: Software Configuration Management (2)
OSS SW Basics Lecture 08: Software Configuration Management (2)OSS SW Basics Lecture 08: Software Configuration Management (2)
OSS SW Basics Lecture 08: Software Configuration Management (2)
 
Travis CI 에서 CodeBuild 로
Travis CI 에서 CodeBuild 로Travis CI 에서 CodeBuild 로
Travis CI 에서 CodeBuild 로
 
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
 
세션5_데보션테크데이_이상근.pdf
세션5_데보션테크데이_이상근.pdf세션5_데보션테크데이_이상근.pdf
세션5_데보션테크데이_이상근.pdf
 
Git
GitGit
Git
 
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
 

Git의 원리

  • 2. Git이란 무엇인가 Git의 내부 동작 Git Object 예시 목차
  • 3. Git이란 무엇인가? 분산 버전 관리 시스템 Git은 내용을 주소로 활용하는 컨텐츠 추적 파일 시스템 다양한 브랜치 전략과 워크플로우
  • 4. Content-addressable Key-Value Storage • 체크섬 : Git에서 사용하는 가장 기본적인(Atomic) 데이터 단위 • SHA-1 해시를 사용하여 체크섬 생성 • 160 bits = 20 bytes • 16 진수 문자열 형태로 표현하면 40자 • 8a8363d93e61185f6df18ed61321626be514c7f4 8a objects 8363d93e61185f6df18ed61321626be514c7f4 └── .git
  • 5. 버전 관리 시스템 – CVCS / DVCS 백업 어려움, 히스토리 잃음
  • 6. Git의 킬러 기능 – branch l 워크플로우 l 스냅샷 & 델타 • 메인 라인 브랜치 개발 모델 • 기능별 브랜치 개발 모델 • 상태 브랜치 모델 • 정기 배포 모델
  • 7. Git의 내부 동작 - .git git init config description HEAD hooks info objects refs 해당 프로젝트에만 적용되는 설정 옵션 클라이언트 훅이나 서버 훅이 위치 .gitignore처럼 무시할 파일의 패턴을 적어두는 곳 현재 체크아웃한 브랜치 정보 저장 커밋 개체의 포인터 저장 모든 컨텐츠를 저장하는 데이터베이스 GitWeb 페이지에 리포지토리에 대한 설명을 표시
  • 8. Git의 내부 동작 - 명령어 File System K-V Storage Plumbing Porcelain # git commit # git hash-object $ echo 'test content' | git hash-object -w --stdin d670460b4b4aece5915caf5c68d12f560a9fe3e4 → 40자 길이의 체크섬 해시를 출력 Git 의 내부 구조에 접근할 수 있는 저수준 명령어 l Plumbing 명령어 사용자에게 친숙한 고수준 명령어 l Porcelain 명령어
  • 9. Git의 내부 동작 – 저장소 구조
  • 10. Git Object 예시 $ tree .git/objects $ mkdir git_example $ cd git_example $ git init $ echo "# Git Object" > README.md $ ls .git $ tree .git/objects $ git add README.md $ ls .git
  • 11. Git Object 예시 $ git commit -m "first commit" $ tree .git/objects $ git cat-file -t 359351 $ git cat-file -t 3fb41d $ git cat-file -t dda4e6
  • 12. 출처 • Git 공식 홈페이지 Docs - https://git-scm.com/docs • [Book] ProGit - https://git-scm.com/book/ko/v2 • 스냅샷과 델타 - http://dogfeet.github.io/articles/2012/git-delta.html • Git 내부 구조- https://medium.com/happyprogrammer-in-jeju/git-%EB%82%B4%EB%B6%80- %EA%B5%AC%EC%A1%B0%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90-1-%EA%B8%B0%EB%B3%B8- %EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8-81b34f85fe53 • Git 내부 구조- https://it-eldorado.tistory.com/4 • Git 내부 구조- https://coding-groot.tistory.com/68 • Git vs. Mercurial - https://d2.naver.com/helloworld/1011 • Git Object 예시 - https://matthew-brett.github.io/curious-git/git_object_types.html • 워크플로우 - https://zepel.io/blog/5-git-workflows-to-improve-development • 단계별 명령어 - https://ndpsoftware.com/git-cheatsheet.html • 배우기- https://learngitbranching.js.org/?demo=&locale=ko