* SlideShare에서 특정 폰트로 쓰인 글자가 보이지 않는 경우가 있습니다. 다운로드 하셔서 PDF 리더로 보시는 것을 권해드립니다. -> 기존 폰트를 모두 나눔고딕으로 변경하였습니다.
OSS 포럼 개발 교육으로 진행한 Git, GitHub 강의 자료입니다.
(http://onoffmix.com/event/67081)
간단한 로또 번호 생성기 프로그램을 작성하면서 Git, GitHub에 대해 배웁니다.
1. Git과 Github
- 버전 관리?
- Git은 어쩌다 세상에 나왔나?
- Github?
2. Git 시작하기 - 실습
- 실습 준비 : Github, Goorm IDE 가입하기
- 리눅스 명령어와 친해지기
- Git 필수 개념 집고 넘어가기
- Step by Step Git 명령어 실습 (커밋, 브랜치, 원격 저장소 등)
- 옆자리 분과 Fork하고, Pull Request
3. Git과 Github 맛깔나게 활용하기
- Github의 협업 기능 살펴보기
- Github Page
- Gitbook
4. 있어보이는 Git 활용
- .git 디렉토리 살펴보기
- Git Branch 전략
- Commit Message 활용
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+githubJunyoung Lee
OSS 포럼 개발자 교육 'Git/GitHub 입문하기 - 부산'에서 Git 실습에서 사용한 자료입니다. (http://onoffmix.com/event/69536)
지난 번 자료(http://www.slideshare.net/ssusercef361/git-github-62006866)는 구름 IDE를 활용해서 진행했고, 이번 자료는 Git 클라이언트를 설치해서 진행했습니다. GitHub 가입과 Git 클라이언트 설치는 강의 전 준비(http://www.slideshare.net/ssusercef361/github-git)를 참고해주세요.
1. Git과 Github
- 버전 관리?
- Git은 어쩌다 세상에 나왔나?
- Github?
2. Git 시작하기 - 실습
- 실습 준비 : Github, Goorm IDE 가입하기
- 리눅스 명령어와 친해지기
- Git 필수 개념 집고 넘어가기
- Step by Step Git 명령어 실습 (커밋, 브랜치, 원격 저장소 등)
- 옆자리 분과 Fork하고, Pull Request
3. Git과 Github 맛깔나게 활용하기
- Github의 협업 기능 살펴보기
- Github Page
- Gitbook
4. 있어보이는 Git 활용
- .git 디렉토리 살펴보기
- Git Branch 전략
- Commit Message 활용
특정 폰트가 SlideShare.net에서 보이지 않는 관계로 모두 나눔고딕으로 통일했습니다.
You can also see these on ipad , iphone , ipod , tablet & android only on Voot , Youtube & Viu & one thing also my name is Aditya Singh Jadoun & I am a child . My school name is Jayshree Periwal High School & I am an indian , my father's name is Munesh Singh Jadoun . End of This line . Now see my fantastic , amazing , ultimate & cool presentation .
* SlideShare에서 특정 폰트로 쓰인 글자가 보이지 않는 경우가 있습니다. 다운로드 하셔서 PDF 리더로 보시는 것을 권해드립니다. -> 기존 폰트를 모두 나눔고딕으로 변경하였습니다.
OSS 포럼 개발 교육으로 진행한 Git, GitHub 강의 자료입니다.
(http://onoffmix.com/event/67081)
간단한 로또 번호 생성기 프로그램을 작성하면서 Git, GitHub에 대해 배웁니다.
1. Git과 Github
- 버전 관리?
- Git은 어쩌다 세상에 나왔나?
- Github?
2. Git 시작하기 - 실습
- 실습 준비 : Github, Goorm IDE 가입하기
- 리눅스 명령어와 친해지기
- Git 필수 개념 집고 넘어가기
- Step by Step Git 명령어 실습 (커밋, 브랜치, 원격 저장소 등)
- 옆자리 분과 Fork하고, Pull Request
3. Git과 Github 맛깔나게 활용하기
- Github의 협업 기능 살펴보기
- Github Page
- Gitbook
4. 있어보이는 Git 활용
- .git 디렉토리 살펴보기
- Git Branch 전략
- Commit Message 활용
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+githubJunyoung Lee
OSS 포럼 개발자 교육 'Git/GitHub 입문하기 - 부산'에서 Git 실습에서 사용한 자료입니다. (http://onoffmix.com/event/69536)
지난 번 자료(http://www.slideshare.net/ssusercef361/git-github-62006866)는 구름 IDE를 활용해서 진행했고, 이번 자료는 Git 클라이언트를 설치해서 진행했습니다. GitHub 가입과 Git 클라이언트 설치는 강의 전 준비(http://www.slideshare.net/ssusercef361/github-git)를 참고해주세요.
1. Git과 Github
- 버전 관리?
- Git은 어쩌다 세상에 나왔나?
- Github?
2. Git 시작하기 - 실습
- 실습 준비 : Github, Goorm IDE 가입하기
- 리눅스 명령어와 친해지기
- Git 필수 개념 집고 넘어가기
- Step by Step Git 명령어 실습 (커밋, 브랜치, 원격 저장소 등)
- 옆자리 분과 Fork하고, Pull Request
3. Git과 Github 맛깔나게 활용하기
- Github의 협업 기능 살펴보기
- Github Page
- Gitbook
4. 있어보이는 Git 활용
- .git 디렉토리 살펴보기
- Git Branch 전략
- Commit Message 활용
특정 폰트가 SlideShare.net에서 보이지 않는 관계로 모두 나눔고딕으로 통일했습니다.
You can also see these on ipad , iphone , ipod , tablet & android only on Voot , Youtube & Viu & one thing also my name is Aditya Singh Jadoun & I am a child . My school name is Jayshree Periwal High School & I am an indian , my father's name is Munesh Singh Jadoun . End of This line . Now see my fantastic , amazing , ultimate & cool presentation .
This talk at the Percona Live MySQL Conference and Expo describes open source column stores and compares their capabilities, correctness and performance.
SQL 2016 Mejoras en InMemory OLTP y Column Store IndexEduardo Castro
Vemos las mejoras que presenta SQL Server 2016 en los temas de InMemory OLTP y también los cambios en Column Store Index, y su importancia en la mejora de desempeño.
Saludos,
Ing. Eduardo Castro, PhD
Microsoft SQL Server MVP
The Top Skills That Can Get You Hired in 2017LinkedIn
We analyzed all the recruiting activity on LinkedIn this year and identified the Top Skills employers seek. Starting Oct 24, learn these skills and much more for free during the Week of Learning.
#AlwaysBeLearning https://learning.linkedin.com/week-of-learning
오픈스택 커뮤니티 - 제1회 공개 SW 커뮤니티데이 (2017년 9월 정기 세미나 대체)
- 일시: 9월 22일 금요일
- 발표자: 장태희 (운영진, 스터디 매니저)
- 행사 정보: https://www.facebook.com/groups/openstack.kr/permalink/1826976907316452/
54. .
./.git
./.git/branches
./.git/config
./.git/description
./.git/HEAD
./.git/info
./.git/info/exclude
./.git/objects
./.git/objects/info
./.git/objects/pack
./.git/refs
./.git/refs/heads
./.git/refs/tags
앞서 Javascript 변수로 설명한
것들이 파일로 존재한다!
55. git init 명령직후에는 master 파일 내
용에 아무것도 없다
$ cat ./git/HEAD
ref: refs/heads/master
!
$ cat .git/refs/heads/master
cat: .git/refs/heads/master: No such file or directory
!
$ git branch
!
$
!
브랜치 역시 없는 상태
56. 간단히 README 파일을 생성한다
$ echo ‘just created’ README
!
$ ls -la
total 0
drwxr-xr-x 4 andrwj staff 136 11 25 00:18 .
drwxr-xr-x 3 andrwj staff 102 11 25 00:14 ..
drwxr-xr-x 14 andrwj staff 476 11 26 17:21 .git
-rw-r--r-- 1 andrwj staff 0 11 25 00:16 README
!
$ cat README
just created
!
$
현재 폴더에는 READ와
.git 폴더 뿐이다
58. $ cat .git/HEAD
!
ref: refs/heads/master
!!
그러나 여전히 master 파일의 내용은 비어있다
$ cat .git/refs/heads/master
cat: .git/refs/heads/master: No such file or directory
!!!
$ cat .git/object/4e/8238248ad38d598515adb865b818ec9381f967
!
x??Q
B!???????
??-?ied?]??
?;03K??
@???9Cd?9%t?I???Ή?(J+B?%e4?=n???
??L?s?^k(?????!???zkͤs3?߂????????/?
생성된 긴 이름의 파일을 출력해보니
TEXT 포맷의 파일이 아님을 알수있다
59. git blob format
헤더 정보를 포함하여 zlib로 압축되어 저장된다
헤더 형식: “blob 원본파일크기 null”
60. blob format
$ cd .git/object/4e/
$ python
fd = open(“8238248ad38d598515adb865b818ec9381f967”)
line = fd.read()
import zlib
zlib.decompress(line)
‘blob 13x00just createdn’
객체 종류는
‘blob’ 원본 크기는 13 바이트
null 바이트
원본 내용
61. git hash-object README
$ git hash-object README
4e8238248ad38d598515adb865b818ec9381f967
!
$ git cat-file -p 4e8238
just created
파일이름으로 해쉬명을 알 수 있다
파일이름 몇글자로
내용을 출력할 수 있다
62. why hash ?
내용에 따라 중복된 이름이 나올 가능성이 극히 드물다
육안으로 분별하기 힘든 차이도 쉽게 검출 가능하다
번호로된 파일 이름보다 관리 하기 쉽다(?)
파일명이 변경되어도 내용이 같으면 동일한 것으로
인식한다.
63. README
!
‘just created’
README
!
‘just created ‘
$ cat README
!
‘just created’
!!
끝부분 공백도 명확히 알 수 있다
$ git hash-object README
!
ec53c2432a2e9c2fadaa9d5982bd3cf31f9b38d2
!
$ cat README
!
‘just created ’
!!
$ git hash-object README
!
a6014d70c71eab934f3ac1248f8bad19ad3d451c
!
68. var blob = “헤더+내용이 zlib 로 압축된 문자열”;
!
var Tree = [
blob,
Tree,
];
!
var Commit = {
Javascript로 표현 ...
parent: { },
tree: [ ],
author: “string”,
date: “2011/11/30”
};
!
var Tag = “커밋을 가리키는 문자열”
69. blob object
Blob
header + content
!
zlib로 압축되어 있다
!
.git/objects/ 아래 있다
70. tree object
Tree
blob + 다른 tree 객체
!
‘폴더’와 같은 개념
!
.git/objects/ 아래 있다
71. commit object
Commit
blobs + trees + author
+ date + message
!
.git/objects/ 아래 있다
72. tag object
Tag
pointer to commit object
!
.git/refs/tags/ 아래있다
73. B
BB
T
TBT T
TBT T
prev
author
date
message
BTT TBT
Tag
BBB
prev
author
date
message
T
TBT T
TBT T
TBT
BBB
prev
author
date
message
T
TBT T
TBT T
TBT
Tag
BB
BT HEAD
master
예를 들자면...
74. 중간 정리
파일은 blob 포맷으로 저장된다.
폴더는 tree 객체로, 파일은 blob 객체로 표현된다.
commit, tag 역시 객체로 취급되어 파일형태로 저장된다.
모든 파일은 SHA 방식의 해쉬로 표현된다.
Git의 branch와 commit 은 pointer 이다.
75. three spaces
- Working area
!
- Staging or Index
!
- Local Repository
79. Repo
!R
Working Staging
EADME
$ cat ‘just created’ README
과정1 /11 - 처음으로 커밋할 파일을 생성
80. Repo
!R
Working Staging
EADME
$ cat README
just created
과정2 /11 - 파일 내용 보기
81. !
Repo
!R
Working
EADME
!R
Staging
EADME
$ git add README
스과테정이3 징/1 영1역 -에 스 파테일이 징정 보영 역기에록
파일 정보 기록
‘README’ 파일은 blob 형식으로 변환되어
.git/object/ 아래에 저장됨
82. !
Repo
!R
Working
EADME
!R
Staging
EADME
$ git ls-files -s
100644 4e8238248ad38d598515adb865b818ec9381f967 0 README
!
과정4 /11 - 스테이징 영역의 파일 정보 열람
(.git/index 파일 내용을 참조)
83. !
Repo
!R
Working
EADME
!R
Staging
EADME
$ ls -la .git/object/4e
drwxr-xr-x 3 andrwj staff 102 11 26 17:37 .
drwxr-xr-x 7 andrwj staff 238 11 26 18:06 ..
-r--r--r-- 1 andrwj staff 29 11 26 17:37 8238248ad38d598515adb865b818ec9381f967
과정5 /11 - ‘commit’ 단계에서 파일이 저장되는 것이 아니라,
‘add’ 단계에서 이미 저장되어 있는 것이
subversion 과 다른점!
84. !
Repo
!R
Working
EADME
!R
Staging
EADME
$ cat .git/index
??~?){???e?쓁?gREADME'mh?$
과정6 /11 - .git/index 파일은 TEXT 형식의 파일이 아
님.
85. !
!
Repo
!R
Working
EADME
!R
Staging
EADME
$ git commit -m ‘first commit’
[master (root-commit) b3d38eb] first commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 README
!R
C1: b3d38eb
EADME
!
과정7 /11 - 이미 README 저장되어 있으므로
‘commit’ 단계에선 스테이징 영역의 리스트를 참조
하여 commit object를 만든다
88. !
!
Repo
!R
Working
EADME
!R
Staging
EADME
!R
C1: b3d38eb
EADME
!
$ git cat-file -p b3d38eb6591fc4737509a00471e9a64ba4f79c5c
tree b529edd1315d7d85716378eb7829ba0772542851
author AJ andrwj@gmail.com 1322298365 +0900
committer AJ andrwj@gmail.com 1322298365 +0900
과정10 /11 - 커밋객체(파일)의 내용을 출력해보면
tree 객체와 커밋한 사용자와 날짜 및
커밋 메세지를 볼 수 있다.
89. !
!
Repo
!R
Working
EADME
!R
Staging
EADME
!R
C1: b3d38eb
EADME
!
$ file . -name ‘*d38eb6591fc4737509a00471e9a64ba4f79c5c’
./.git/objects/b3/d38eb6591fc4737509a00471e9a64ba4f79c5c
과정11 /11 - 커밋객체(파일) 역시 .git/objects/ 폴더 아래에 있다.