SlideShare a Scribd company logo
Why use Git ?
d
source code management system
NIPA Open Frontier Lab.
Taeung Song
treeze.taeung@gmail.com
2016-04-26
Speaker
송태웅 (Taeung Song, https://github.com/taeung)
2016 NIPA Open Frontier Lab 3 기 (http://devlab.oss.kr/)
2015 Linux kernel - perf 프로젝트 contributor 활동 중
2014 ( 주 ) XS 선임연구원 ( 네트워크 , 서버 , ARM, etc.)
2013 NIPA 창의도전형 R&D 2 기
2012 NIPA SW Maestro 3 기
2011 ( 주 ) MTOME 개발연구원 ( 임베디드 , WinAPI)
Why you should use Git ?
Contents
Git 이란
(What)
Git 활용과 응용
(How)
오픈소스
(Advanced)
Git, Github 쓰는 이유
(Why)
우리 프로젝트와 Git
(Apply)
Git 이란 간단한 정의
Histroy 관리가 되어 특정시점으로 복구가능 , 변화되어온 과정을 볼 수 있다 .
Git 개발과정 , 소스파일 등을 관리하는 도구
Git 의 기능
Source code management tool
과제 1_ 최종 _2016_02_28.zip
과제 1_ 진짜최종 _2016_02_29.zip
과제 1_ 진짜진짜최종 _2016_03_01.zip
Ctrl+c, v 나 Alzip 압축파일 관리법
가그 사이에 뭐 바뀌었는지
차이 (Diff) 를 알 수 없다 .
Source code management tool
과제 1_ 최종 _2016_02_28.zip
과제 1_ 진짜최종 _2016_02_29.zip
과제 1_ 진짜진짜최종 _2016_03_01.zip
Ctrl+c, v 나 Alzip 압축파일 관리법
가그 사이에 뭐 바뀌었는지
차이 (Diff) 를 알 수 없다 .
Ctrl + c, v 를 할수록
차지하는 용량 X 2
X 3 … + diff
Git 의 기능
Source code management tool
과제 1_ 최종 _2016_02_28.zip
과제 1_ 진짜최종 _2016_02_29.zip
과제 1_ 진짜진짜최종 _2016_03_01.zip
Ctrl+c, v 나 Alzip 압축파일 관리법
가그 사이에 뭐 바뀌었는지
차이 (Diff) 를 알 수 없다 .
Ctrl + c, v 를 할수록
차지하는 용량 X 2
X 3 … + diff
< History 가관리 능 >
차이 (Diff) 가 무엇이고
수정 이유를 Log 를 남길수있다 .
Git 의 기능
Source code management tool
과제 1_ 최종 _2016_02_28.zip
과제 1_ 진짜최종 _2016_02_29.zip
과제 1_ 진짜진짜최종 _2016_03_01.zip
Ctrl+c, v 나 Alzip 압축파일 관리법
가그 사이에 뭐 바뀌었는지
차이 (Diff) 를 알 수 없다 .
Ctrl + c, v 를 할수록
차지하는 용량 X 2
X 3 … + diff
< History 가관리 능 >
차이 (Diff) 가 무엇이고
수정 이유를 Log 를 남길수있다 .
< 가타임머신 능 >
현재파일들은 안전한 상태로
과거 가상태 그대로 복원 능 ( 가반대도 능 )
( 각 버전별 차이만 저장해서 size 감소 )
Git 의 기능
Source code management tool
과제 1_ 최종 _2016_02_28.zip
과제 1_ 진짜최종 _2016_02_29.zip
과제 1_ 진짜진짜최종 _2016_03_01.zip
Ctrl+c, v 나 Alzip 압축파일 관리법
가그 사이에 뭐 바뀌었는지
차이 (Diff) 를 알 수 없다 .
Ctrl + c, v 를 할수록
차지하는 용량 X 2
X 3 … + diff
< History 가관리 능 >
차이 (Diff) 가 무엇이고
수정 이유를 Log 를 남길수있다 .
< 가타임머신 능 >
현재파일들은 안전한 상태로
과거 가상태 그대로 복원 능 ( 가반대도 능 )
( 각 버전별 차이만 저장해서 size 감소 )
< 특정 버전 관리 >
tag 나 release 로
가관리 능
Git 의 기능
Source code management tool
과제 1_ 최종 _2016_02_28.zip
과제 1_ 진짜최종 _2016_02_29.zip
과제 1_ 진짜진짜최종 _2016_03_01.zip
Ctrl+c, v 나 Alzip 압축파일 관리법
승리
( 아직까진 ..)
Git 배우는데 시간소비하느니
Code 한줄이라도 더 개발 ..)
좋은건 알겠는데 ..
Git 을 쓸 이유가 부족 ..
(Wants VS Needs)
Git 의 기능
Git 을 쓰는이유
협업 때문에 Git 을 쓴다 . ( 집단지성의 극대화 )
현대적인 , 교양있는 , 문명화된 소스코드 개발과정을 위해 Git 을 쓴다 .
https://geektimes.ru
Git 활용과 응용 How
Git 이란
(What)
Git 활용과 응용
(How)
오픈소스
(Advanced)
Git, Github 쓰는 이유
(Why)
우리 프로젝트와 Git
(Apply)
협업 때문에 Git 을 쓴다 . ( 집단지성의 극대화 )
Commit ( 변화분 ) 을 통한 개발방식의 위대함 ( 리뷰 , 토론 )
https://geektimes.ru
Git 활용과 응용 How
Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 )
https://github.com/torvalds/linux
* 참고 : Linux kernel 은 Github 에서 mirror 까지는 되지만 다음 Repository 가 공식
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/
Git 활용과 응용 사례 1. Linux kernel 개발방식
Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 )
https://github.com/torvalds/linux
Git 활용과 응용 사례 1. Linux kernel 개발방식
Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 )
https://github.com/torvalds/linux
Git 활용과 응용 사례 1. Linux kernel 개발방식
Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 )
https://github.com/torvalds/linux
Git 활용과 응용 사례 1. Linux kernel 개발방식
이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail)
Git 활용과 응용 사례 1. Linux kernel 개발방식
이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail)
Git 활용과 응용 사례 2. Pull-request 개발방식
이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail)
Git 활용과 응용 사례 2. Pull-request 개발방식
이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail)
Git 활용과 응용 사례 2. Pull-request 개발방식
이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail)
Git 활용과 응용 사례 2. Pull-request 개발방식
이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail)
Git 활용과 응용 사례 2. Pull-request 개발방식
이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail)
Git 활용과 응용 사례 2. Pull-request 개발방식
Git, Github 쓰는이유 Why
Git 이란
(What)
Git 활용과 응용
(How)
오픈소스
(Advanced)
Git, Github 쓰는 이유
(Why)
우리 프로젝트와 Git
(Apply)
Git 을 쓰는이유
협업 때문에 Git 을 쓴다 . ( 집단지성의 극대화 )
현대적인 , 교양있는 , 문명화된 소스코드 개발과정을 위해 Git 을 쓴다 .
Git 을 쓰는이유
협업 때문에 Git 을 쓴다 . ( 집단지성의 극대화 )
현대적인 , 교양있는 , 문명화된 소스코드 개발과정을 위해 Git 을 쓴다 .
Coding Style 또는 Coding Convention 은 기본
Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 )
이 변화분 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail)
소스코드 품질상승 ( 다수의 버그 / 오류 미리 차단 , 추적용이 등 )
소스코드 품질상승 ( 다수의 버그 / 오류 미리 차단 , 추적용이 등 )
Git 을 활용하는 오픈소스가 대표적인 증명 (IT 기업들의 높은 의존 , 소프트웨어 역사를 이끄는 )
Git 을 쓰는이유
Git 을 쓰는이유
소스코드 품질상승 ( 다수의 버그 / 오류 미리 차단 , 추적용이 등 )
Git 을 활용하는 오픈소스가 대표적인 증명 (IT 기업들의 높은 의존 , 소프트웨어 역사를 이끄는 )
카카오 , NHN 엔터테이먼트 등 SW 기업들의 pull-request 방식도입
Git 을 쓰는이유
소스코드 품질상승 ( 다수의 버그 / 오류 미리 차단 , 추적용이 등 )
Git 을 활용하는 오픈소스가 대표적인 증명 (IT 기업들의 높은 의존 , 소프트웨어 역사를 이끄는 )
Junior 개발자 교육 효과 ( 프로개발자의 코드를 볼수 있는 기회 )
카카오 , NHN 엔터테이먼트 등 SW 기업들의 pull-request 방식도입
Opensource 오픈소스와 컨트리뷰션
Git 이란
(What)
Git 활용과 응용
(How)
오픈소스
(Advanced)
Git, Github 쓰는 이유
(Why)
우리 프로젝트와 Git
(Apply)
Github 란
각종 Remote repository ( 원격저장소 ) 들의 집합소
Git 이라는 도구를 응용한 사이트
Opensource Github / Not Github
- Node.js (https://github.com/nodejs/node)
- Angular.js (https://github.com/angular/angular.js)
- Spring-boot (https://github.com/spring-projects/spring-boot)
- Rust (https://github.com/rust-lang/rust)
- Redis (https://github.com/antirez/redis)
- Flask (https://github.com/mitsuhiko/flask)
…
- Apache (http://git.apache.org)
- Linux kernel (http://git.kernel.org)
- GNU (http://git.savannah.gnu.org/cgit/)
- Webkit (git://git.webkit.org/WebKit.git)
…
Github
Not Github
Not Github Gitub 가 아닌 remote repo 관리 사이트
https://git.kernel.org
Opensource 각종 오픈소스
전세계 각종 오픈소스 통계 사이트 (https://www.openhub.net/)
오픈소스 커미터 개인별 통계 뷰 (https://www.openhub.net/accounts/namhyung)
Opensource 각종 오픈소스에 기여 통계
Opensource Contributor, Committer, Maintainer
( 참고 )
https://wiki.kldp.org/wiki.php/KoreanOpenSourceCommitter
http://dirkriehle.com/publications/2014-2/the-open-source-software-developer-career-and-its-benefits/
http://www.payscale.com/research/US/Skill=Open_Source/Salary
http://nolongernew.blogspot.kr/2010/02/economic-motivation-of-open-source.html
오픈소스 컨트리뷰션의 효과
포트폴리오 , 취직 , 고연봉
실력 , 프로개발자 , 코어개발자 , 커미터
행복한 개발자
우리 프로젝트와 Git 운용 전략
Git 이란
(What)
Git 활용과 응용
(How)
오픈소스
(Advanced)
Git, Github 쓰는 이유
(Why)
우리 프로젝트와 Git
(Apply)
우리 프로젝트와 Git 운용 전략 ( 프로젝트 관리방식 )
sogang
프로젝트명 : sogang
팀원 : Taeung, Kyuho ...
우리 프로젝트와 Git 운용 전략 ( 프로젝트 관리방식 )
sogang
Taeung/sogang Kyuho/sogang
Fork !!
Fork !!
프로젝트명 : sogang
팀원 : Taeung, Kyuho ...
우리 프로젝트와 Git 운용 전략 ( 프로젝트 관리방식 )
sogang
Taeung/sogang Kyuho/sogang
Fork !!
Fork !!
Pull-request !!
Pull-request !!
프로젝트명 : sogang
팀원 : Taeung, Kyuho ...
'fixes' branch
'features' branch
우리 프로젝트와 Git 운용 전략 ( 프로젝트 관리방식 )
sogang
Taeung/sogang Kyuho/sogang
Fork !!
Fork !!
Pull-request !!
Pull-request !!
Maintainer 의 review
함께 discussion
프로젝트명 : sogang
팀원 : Taeung, Kyuho ...
'fixes' branch
'features' branch
우리 프로젝트와 Git 운용 전략 (pull-request 방법 )
http://www.gulistanboylu.com/how-to-send-pull-request-on-github/
(git 훈련 자료 )
https://github.com/taeung/git-training
Q&A - 자주 묻는 질문들과 간단한 대답
1) Git 과 Github 의 차이는 ?
2) Commit 과 Push 의 차이는 ?
3) Fetch 와 Pull 의 차이는 ?
4) Rebase 와 Merge 의 차이는 ?
Git 은 각 컴퓨터 (local) 에 설치되어 소스코드관리가 가능한 프로그램이고
Github 는 remote 저장소가 있는 외부서버를 지칭한다 .
commit 은 local 작업폴더에 history 를 쌓는것이어서 외부망 (internet) 을 안쓰고
Push 는 remote 저장소 (Github 등 ) 에 history 를 쌓는것이어서 외부망 (intenet) 이 필요하다 .
Remote 저장소 (Github 등 ) 로 부터 최신 commit 정보들을 가져오는것은 매한가지이나
Fetch 는 가져와서 임시폴더 (.git) 에 저장하고
Pull 은 바로 현재 branch 에 merge 작업을 동반한다 .
둘다 두 branch 의 차이점 (commits) 를 합치는것은 매한가지나
Rebase 는 합치기 전에 되감기 (rewinding) 를 하고
Merge 는 안하고 합친다 .
Other questions ?

More Related Content

What's hot

네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한
네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한
네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한
NAVER Engineering
 
Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기
Joonsung Lee
 
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
YunWon Jeong
 
Python 생태계의 이해
Python 생태계의 이해Python 생태계의 이해
Python 생태계의 이해
용 최
 
D2 CAMPUS FEST 2015 오리엔테이션 session1
D2 CAMPUS FEST 2015 오리엔테이션 session1D2 CAMPUS FEST 2015 오리엔테이션 session1
D2 CAMPUS FEST 2015 오리엔테이션 session1
NAVER D2
 
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
성일 한
 
[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on labNAVER D2
 
도도와 파이썬: 좋은 선택과 나쁜 선택
도도와 파이썬: 좋은 선택과 나쁜 선택도도와 파이썬: 좋은 선택과 나쁜 선택
도도와 파이썬: 좋은 선택과 나쁜 선택
Jc Kim
 
Git는 머꼬? GitHub는 또 머지?
Git는 머꼬? GitHub는 또 머지?Git는 머꼬? GitHub는 또 머지?
Git는 머꼬? GitHub는 또 머지?
Ian Choi
 
The practice of handling with FOSS by GPL v2inthe automotive
The practice of handling with FOSS by GPL v2inthe automotiveThe practice of handling with FOSS by GPL v2inthe automotive
The practice of handling with FOSS by GPL v2inthe automotive
Byungjoo Hwang
 
Sublime Text 3 for python and django
Sublime Text 3 for python and djangoSublime Text 3 for python and django
Sublime Text 3 for python and django
raccoony
 
네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙
네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙
네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙
NAVER Engineering
 
devon2013: 사내Git저장소개발사례
devon2013: 사내Git저장소개발사례devon2013: 사내Git저장소개발사례
devon2013: 사내Git저장소개발사례
Daehyun Kim
 
Git의 개념과 사용
Git의 개념과 사용Git의 개념과 사용
Git의 개념과 사용
환민 홍
 
141103 최창원 파이썬 확장 프로그래밍
141103 최창원 파이썬 확장 프로그래밍141103 최창원 파이썬 확장 프로그래밍
141103 최창원 파이썬 확장 프로그래밍
Changwon Choe
 
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
Mickey SJ Lee
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기
nexusz99
 
[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용
Ian Choi
 
네이버 오픈소스 세미나 - 오픈소스 프로젝트 참여하기 NAVER 박은정
네이버 오픈소스 세미나 - 오픈소스 프로젝트 참여하기 NAVER 박은정네이버 오픈소스 세미나 - 오픈소스 프로젝트 참여하기 NAVER 박은정
네이버 오픈소스 세미나 - 오픈소스 프로젝트 참여하기 NAVER 박은정
NAVER Engineering
 
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQtPyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
덕규 임
 

What's hot (20)

네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한
네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한
네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한
 
Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기
 
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
 
Python 생태계의 이해
Python 생태계의 이해Python 생태계의 이해
Python 생태계의 이해
 
D2 CAMPUS FEST 2015 오리엔테이션 session1
D2 CAMPUS FEST 2015 오리엔테이션 session1D2 CAMPUS FEST 2015 오리엔테이션 session1
D2 CAMPUS FEST 2015 오리엔테이션 session1
 
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
 
[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab
 
도도와 파이썬: 좋은 선택과 나쁜 선택
도도와 파이썬: 좋은 선택과 나쁜 선택도도와 파이썬: 좋은 선택과 나쁜 선택
도도와 파이썬: 좋은 선택과 나쁜 선택
 
Git는 머꼬? GitHub는 또 머지?
Git는 머꼬? GitHub는 또 머지?Git는 머꼬? GitHub는 또 머지?
Git는 머꼬? GitHub는 또 머지?
 
The practice of handling with FOSS by GPL v2inthe automotive
The practice of handling with FOSS by GPL v2inthe automotiveThe practice of handling with FOSS by GPL v2inthe automotive
The practice of handling with FOSS by GPL v2inthe automotive
 
Sublime Text 3 for python and django
Sublime Text 3 for python and djangoSublime Text 3 for python and django
Sublime Text 3 for python and django
 
네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙
네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙
네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙
 
devon2013: 사내Git저장소개발사례
devon2013: 사내Git저장소개발사례devon2013: 사내Git저장소개발사례
devon2013: 사내Git저장소개발사례
 
Git의 개념과 사용
Git의 개념과 사용Git의 개념과 사용
Git의 개념과 사용
 
141103 최창원 파이썬 확장 프로그래밍
141103 최창원 파이썬 확장 프로그래밍141103 최창원 파이썬 확장 프로그래밍
141103 최창원 파이썬 확장 프로그래밍
 
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기
 
[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용
 
네이버 오픈소스 세미나 - 오픈소스 프로젝트 참여하기 NAVER 박은정
네이버 오픈소스 세미나 - 오픈소스 프로젝트 참여하기 NAVER 박은정네이버 오픈소스 세미나 - 오픈소스 프로젝트 참여하기 NAVER 박은정
네이버 오픈소스 세미나 - 오픈소스 프로젝트 참여하기 NAVER 박은정
 
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQtPyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
 

Similar to Why use git

깃허브 시작하기
깃허브 시작하기깃허브 시작하기
깃허브 시작하기
진태 이
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
지원 정
 
[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
 
140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴
은아 정
 
리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기
Wooyoung Ko
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규ChangKyu Song
 
11. git basic
11. git basic11. git basic
11. git basic
Geunhyung Kim
 
Git basic
Git basicGit basic
Git basic
Jinhan Heo
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습
BJ Jang
 
200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의 200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의
Joohyun Han
 
Git 입문자를 위한 가이드
Git 입문자를 위한 가이드Git 입문자를 위한 가이드
Git 입문자를 위한 가이드
chandler0201
 
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
Ian Choi
 
Git & GitHub
Git & GitHubGit & GitHub
Git & GitHub
Jongmin Park
 
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
Joohyun Han
 
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
Ubuntu Korea Community
 
디자이너 버전관리
디자이너 버전관리디자이너 버전관리
디자이너 버전관리
Hailey Lee
 
Git & Github Seminar-1
Git & Github Seminar-1Git & Github Seminar-1
Git & Github Seminar-1
sangyun han
 
Gitflow ppt
Gitflow pptGitflow ppt
Gitflow ppt
종현 김
 
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+githubGit 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Junyoung Lee
 
Git 코드랩 스터디 1
Git 코드랩 스터디 1Git 코드랩 스터디 1
Git 코드랩 스터디 1
승빈이네 공작소
 

Similar to Why use git (20)

깃허브 시작하기
깃허브 시작하기깃허브 시작하기
깃허브 시작하기
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 
[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)
 
140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴
 
리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
 
11. git basic
11. git basic11. git basic
11. git basic
 
Git basic
Git basicGit basic
Git basic
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습
 
200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의 200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의
 
Git 입문자를 위한 가이드
Git 입문자를 위한 가이드Git 입문자를 위한 가이드
Git 입문자를 위한 가이드
 
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
 
Git & GitHub
Git & GitHubGit & GitHub
Git & GitHub
 
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
 
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
 
디자이너 버전관리
디자이너 버전관리디자이너 버전관리
디자이너 버전관리
 
Git & Github Seminar-1
Git & Github Seminar-1Git & Github Seminar-1
Git & Github Seminar-1
 
Gitflow ppt
Gitflow pptGitflow ppt
Gitflow ppt
 
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+githubGit 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
 
Git 코드랩 스터디 1
Git 코드랩 스터디 1Git 코드랩 스터디 1
Git 코드랩 스터디 1
 

Why use git

  • 1. Why use Git ? d source code management system NIPA Open Frontier Lab. Taeung Song treeze.taeung@gmail.com 2016-04-26
  • 2. Speaker 송태웅 (Taeung Song, https://github.com/taeung) 2016 NIPA Open Frontier Lab 3 기 (http://devlab.oss.kr/) 2015 Linux kernel - perf 프로젝트 contributor 활동 중 2014 ( 주 ) XS 선임연구원 ( 네트워크 , 서버 , ARM, etc.) 2013 NIPA 창의도전형 R&D 2 기 2012 NIPA SW Maestro 3 기 2011 ( 주 ) MTOME 개발연구원 ( 임베디드 , WinAPI)
  • 3. Why you should use Git ?
  • 4. Contents Git 이란 (What) Git 활용과 응용 (How) 오픈소스 (Advanced) Git, Github 쓰는 이유 (Why) 우리 프로젝트와 Git (Apply)
  • 5. Git 이란 간단한 정의 Histroy 관리가 되어 특정시점으로 복구가능 , 변화되어온 과정을 볼 수 있다 . Git 개발과정 , 소스파일 등을 관리하는 도구
  • 6. Git 의 기능 Source code management tool 과제 1_ 최종 _2016_02_28.zip 과제 1_ 진짜최종 _2016_02_29.zip 과제 1_ 진짜진짜최종 _2016_03_01.zip Ctrl+c, v 나 Alzip 압축파일 관리법 가그 사이에 뭐 바뀌었는지 차이 (Diff) 를 알 수 없다 .
  • 7. Source code management tool 과제 1_ 최종 _2016_02_28.zip 과제 1_ 진짜최종 _2016_02_29.zip 과제 1_ 진짜진짜최종 _2016_03_01.zip Ctrl+c, v 나 Alzip 압축파일 관리법 가그 사이에 뭐 바뀌었는지 차이 (Diff) 를 알 수 없다 . Ctrl + c, v 를 할수록 차지하는 용량 X 2 X 3 … + diff Git 의 기능
  • 8. Source code management tool 과제 1_ 최종 _2016_02_28.zip 과제 1_ 진짜최종 _2016_02_29.zip 과제 1_ 진짜진짜최종 _2016_03_01.zip Ctrl+c, v 나 Alzip 압축파일 관리법 가그 사이에 뭐 바뀌었는지 차이 (Diff) 를 알 수 없다 . Ctrl + c, v 를 할수록 차지하는 용량 X 2 X 3 … + diff < History 가관리 능 > 차이 (Diff) 가 무엇이고 수정 이유를 Log 를 남길수있다 . Git 의 기능
  • 9. Source code management tool 과제 1_ 최종 _2016_02_28.zip 과제 1_ 진짜최종 _2016_02_29.zip 과제 1_ 진짜진짜최종 _2016_03_01.zip Ctrl+c, v 나 Alzip 압축파일 관리법 가그 사이에 뭐 바뀌었는지 차이 (Diff) 를 알 수 없다 . Ctrl + c, v 를 할수록 차지하는 용량 X 2 X 3 … + diff < History 가관리 능 > 차이 (Diff) 가 무엇이고 수정 이유를 Log 를 남길수있다 . < 가타임머신 능 > 현재파일들은 안전한 상태로 과거 가상태 그대로 복원 능 ( 가반대도 능 ) ( 각 버전별 차이만 저장해서 size 감소 ) Git 의 기능
  • 10. Source code management tool 과제 1_ 최종 _2016_02_28.zip 과제 1_ 진짜최종 _2016_02_29.zip 과제 1_ 진짜진짜최종 _2016_03_01.zip Ctrl+c, v 나 Alzip 압축파일 관리법 가그 사이에 뭐 바뀌었는지 차이 (Diff) 를 알 수 없다 . Ctrl + c, v 를 할수록 차지하는 용량 X 2 X 3 … + diff < History 가관리 능 > 차이 (Diff) 가 무엇이고 수정 이유를 Log 를 남길수있다 . < 가타임머신 능 > 현재파일들은 안전한 상태로 과거 가상태 그대로 복원 능 ( 가반대도 능 ) ( 각 버전별 차이만 저장해서 size 감소 ) < 특정 버전 관리 > tag 나 release 로 가관리 능 Git 의 기능
  • 11. Source code management tool 과제 1_ 최종 _2016_02_28.zip 과제 1_ 진짜최종 _2016_02_29.zip 과제 1_ 진짜진짜최종 _2016_03_01.zip Ctrl+c, v 나 Alzip 압축파일 관리법 승리 ( 아직까진 ..) Git 배우는데 시간소비하느니 Code 한줄이라도 더 개발 ..) 좋은건 알겠는데 .. Git 을 쓸 이유가 부족 .. (Wants VS Needs) Git 의 기능
  • 12. Git 을 쓰는이유 협업 때문에 Git 을 쓴다 . ( 집단지성의 극대화 ) 현대적인 , 교양있는 , 문명화된 소스코드 개발과정을 위해 Git 을 쓴다 . https://geektimes.ru
  • 13. Git 활용과 응용 How Git 이란 (What) Git 활용과 응용 (How) 오픈소스 (Advanced) Git, Github 쓰는 이유 (Why) 우리 프로젝트와 Git (Apply)
  • 14. 협업 때문에 Git 을 쓴다 . ( 집단지성의 극대화 ) Commit ( 변화분 ) 을 통한 개발방식의 위대함 ( 리뷰 , 토론 ) https://geektimes.ru Git 활용과 응용 How
  • 15. Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 ) https://github.com/torvalds/linux * 참고 : Linux kernel 은 Github 에서 mirror 까지는 되지만 다음 Repository 가 공식 http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/ Git 활용과 응용 사례 1. Linux kernel 개발방식
  • 16. Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 ) https://github.com/torvalds/linux Git 활용과 응용 사례 1. Linux kernel 개발방식
  • 17. Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 ) https://github.com/torvalds/linux Git 활용과 응용 사례 1. Linux kernel 개발방식
  • 18. Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 ) https://github.com/torvalds/linux Git 활용과 응용 사례 1. Linux kernel 개발방식
  • 19. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 1. Linux kernel 개발방식
  • 20. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 2. Pull-request 개발방식
  • 21. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 2. Pull-request 개발방식
  • 22. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 2. Pull-request 개발방식
  • 23. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 2. Pull-request 개발방식
  • 24. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 2. Pull-request 개발방식
  • 25. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 2. Pull-request 개발방식
  • 26. Git, Github 쓰는이유 Why Git 이란 (What) Git 활용과 응용 (How) 오픈소스 (Advanced) Git, Github 쓰는 이유 (Why) 우리 프로젝트와 Git (Apply)
  • 27. Git 을 쓰는이유 협업 때문에 Git 을 쓴다 . ( 집단지성의 극대화 ) 현대적인 , 교양있는 , 문명화된 소스코드 개발과정을 위해 Git 을 쓴다 .
  • 28. Git 을 쓰는이유 협업 때문에 Git 을 쓴다 . ( 집단지성의 극대화 ) 현대적인 , 교양있는 , 문명화된 소스코드 개발과정을 위해 Git 을 쓴다 . Coding Style 또는 Coding Convention 은 기본 Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 ) 이 변화분 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) 소스코드 품질상승 ( 다수의 버그 / 오류 미리 차단 , 추적용이 등 )
  • 29. 소스코드 품질상승 ( 다수의 버그 / 오류 미리 차단 , 추적용이 등 ) Git 을 활용하는 오픈소스가 대표적인 증명 (IT 기업들의 높은 의존 , 소프트웨어 역사를 이끄는 ) Git 을 쓰는이유
  • 30. Git 을 쓰는이유 소스코드 품질상승 ( 다수의 버그 / 오류 미리 차단 , 추적용이 등 ) Git 을 활용하는 오픈소스가 대표적인 증명 (IT 기업들의 높은 의존 , 소프트웨어 역사를 이끄는 ) 카카오 , NHN 엔터테이먼트 등 SW 기업들의 pull-request 방식도입
  • 31. Git 을 쓰는이유 소스코드 품질상승 ( 다수의 버그 / 오류 미리 차단 , 추적용이 등 ) Git 을 활용하는 오픈소스가 대표적인 증명 (IT 기업들의 높은 의존 , 소프트웨어 역사를 이끄는 ) Junior 개발자 교육 효과 ( 프로개발자의 코드를 볼수 있는 기회 ) 카카오 , NHN 엔터테이먼트 등 SW 기업들의 pull-request 방식도입
  • 32. Opensource 오픈소스와 컨트리뷰션 Git 이란 (What) Git 활용과 응용 (How) 오픈소스 (Advanced) Git, Github 쓰는 이유 (Why) 우리 프로젝트와 Git (Apply)
  • 33. Github 란 각종 Remote repository ( 원격저장소 ) 들의 집합소 Git 이라는 도구를 응용한 사이트
  • 34. Opensource Github / Not Github - Node.js (https://github.com/nodejs/node) - Angular.js (https://github.com/angular/angular.js) - Spring-boot (https://github.com/spring-projects/spring-boot) - Rust (https://github.com/rust-lang/rust) - Redis (https://github.com/antirez/redis) - Flask (https://github.com/mitsuhiko/flask) … - Apache (http://git.apache.org) - Linux kernel (http://git.kernel.org) - GNU (http://git.savannah.gnu.org/cgit/) - Webkit (git://git.webkit.org/WebKit.git) … Github Not Github
  • 35. Not Github Gitub 가 아닌 remote repo 관리 사이트 https://git.kernel.org
  • 36. Opensource 각종 오픈소스 전세계 각종 오픈소스 통계 사이트 (https://www.openhub.net/)
  • 37. 오픈소스 커미터 개인별 통계 뷰 (https://www.openhub.net/accounts/namhyung) Opensource 각종 오픈소스에 기여 통계
  • 38. Opensource Contributor, Committer, Maintainer ( 참고 ) https://wiki.kldp.org/wiki.php/KoreanOpenSourceCommitter http://dirkriehle.com/publications/2014-2/the-open-source-software-developer-career-and-its-benefits/ http://www.payscale.com/research/US/Skill=Open_Source/Salary http://nolongernew.blogspot.kr/2010/02/economic-motivation-of-open-source.html 오픈소스 컨트리뷰션의 효과 포트폴리오 , 취직 , 고연봉 실력 , 프로개발자 , 코어개발자 , 커미터 행복한 개발자
  • 39. 우리 프로젝트와 Git 운용 전략 Git 이란 (What) Git 활용과 응용 (How) 오픈소스 (Advanced) Git, Github 쓰는 이유 (Why) 우리 프로젝트와 Git (Apply)
  • 40. 우리 프로젝트와 Git 운용 전략 ( 프로젝트 관리방식 ) sogang 프로젝트명 : sogang 팀원 : Taeung, Kyuho ...
  • 41. 우리 프로젝트와 Git 운용 전략 ( 프로젝트 관리방식 ) sogang Taeung/sogang Kyuho/sogang Fork !! Fork !! 프로젝트명 : sogang 팀원 : Taeung, Kyuho ...
  • 42. 우리 프로젝트와 Git 운용 전략 ( 프로젝트 관리방식 ) sogang Taeung/sogang Kyuho/sogang Fork !! Fork !! Pull-request !! Pull-request !! 프로젝트명 : sogang 팀원 : Taeung, Kyuho ... 'fixes' branch 'features' branch
  • 43. 우리 프로젝트와 Git 운용 전략 ( 프로젝트 관리방식 ) sogang Taeung/sogang Kyuho/sogang Fork !! Fork !! Pull-request !! Pull-request !! Maintainer 의 review 함께 discussion 프로젝트명 : sogang 팀원 : Taeung, Kyuho ... 'fixes' branch 'features' branch
  • 44. 우리 프로젝트와 Git 운용 전략 (pull-request 방법 ) http://www.gulistanboylu.com/how-to-send-pull-request-on-github/ (git 훈련 자료 ) https://github.com/taeung/git-training
  • 45. Q&A - 자주 묻는 질문들과 간단한 대답 1) Git 과 Github 의 차이는 ? 2) Commit 과 Push 의 차이는 ? 3) Fetch 와 Pull 의 차이는 ? 4) Rebase 와 Merge 의 차이는 ? Git 은 각 컴퓨터 (local) 에 설치되어 소스코드관리가 가능한 프로그램이고 Github 는 remote 저장소가 있는 외부서버를 지칭한다 . commit 은 local 작업폴더에 history 를 쌓는것이어서 외부망 (internet) 을 안쓰고 Push 는 remote 저장소 (Github 등 ) 에 history 를 쌓는것이어서 외부망 (intenet) 이 필요하다 . Remote 저장소 (Github 등 ) 로 부터 최신 commit 정보들을 가져오는것은 매한가지이나 Fetch 는 가져와서 임시폴더 (.git) 에 저장하고 Pull 은 바로 현재 branch 에 merge 작업을 동반한다 . 둘다 두 branch 의 차이점 (commits) 를 합치는것은 매한가지나 Rebase 는 합치기 전에 되감기 (rewinding) 를 하고 Merge 는 안하고 합친다 .