Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Why use git

446 views

Published on

단순한 역사관리를 넘어서 현명한 협업의 전략도구인 git
commit(변화분)관리를 통한 개발방식이 핵심 (pull-request, PATCH mail, 오픈소스의 개발방식, 집단지성의 극대화)

Published in: Software
  • Be the first to comment

Why use git

  1. 1. Why use Git ? d source code management system NIPA Open Frontier Lab. Taeung Song treeze.taeung@gmail.com 2016-04-26
  2. 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. 3. Why you should use Git ?
  4. 4. Contents Git 이란 (What) Git 활용과 응용 (How) 오픈소스 (Advanced) Git, Github 쓰는 이유 (Why) 우리 프로젝트와 Git (Apply)
  5. 5. Git 이란 간단한 정의 Histroy 관리가 되어 특정시점으로 복구가능 , 변화되어온 과정을 볼 수 있다 . Git 개발과정 , 소스파일 등을 관리하는 도구
  6. 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. 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. 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. 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. 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. 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. 12. Git 을 쓰는이유 협업 때문에 Git 을 쓴다 . ( 집단지성의 극대화 ) 현대적인 , 교양있는 , 문명화된 소스코드 개발과정을 위해 Git 을 쓴다 . https://geektimes.ru
  13. 13. Git 활용과 응용 How Git 이란 (What) Git 활용과 응용 (How) 오픈소스 (Advanced) Git, Github 쓰는 이유 (Why) 우리 프로젝트와 Git (Apply)
  14. 14. 협업 때문에 Git 을 쓴다 . ( 집단지성의 극대화 ) Commit ( 변화분 ) 을 통한 개발방식의 위대함 ( 리뷰 , 토론 ) https://geektimes.ru Git 활용과 응용 How
  15. 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. 16. Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 ) https://github.com/torvalds/linux Git 활용과 응용 사례 1. Linux kernel 개발방식
  17. 17. Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 ) https://github.com/torvalds/linux Git 활용과 응용 사례 1. Linux kernel 개발방식
  18. 18. Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 ) https://github.com/torvalds/linux Git 활용과 응용 사례 1. Linux kernel 개발방식
  19. 19. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 1. Linux kernel 개발방식
  20. 20. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 2. Pull-request 개발방식
  21. 21. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 2. Pull-request 개발방식
  22. 22. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 2. Pull-request 개발방식
  23. 23. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 2. Pull-request 개발방식
  24. 24. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 2. Pull-request 개발방식
  25. 25. 이 변화분 (commits) 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) Git 활용과 응용 사례 2. Pull-request 개발방식
  26. 26. Git, Github 쓰는이유 Why Git 이란 (What) Git 활용과 응용 (How) 오픈소스 (Advanced) Git, Github 쓰는 이유 (Why) 우리 프로젝트와 Git (Apply)
  27. 27. Git 을 쓰는이유 협업 때문에 Git 을 쓴다 . ( 집단지성의 극대화 ) 현대적인 , 교양있는 , 문명화된 소스코드 개발과정을 위해 Git 을 쓴다 .
  28. 28. Git 을 쓰는이유 협업 때문에 Git 을 쓴다 . ( 집단지성의 극대화 ) 현대적인 , 교양있는 , 문명화된 소스코드 개발과정을 위해 Git 을 쓴다 . Coding Style 또는 Coding Convention 은 기본 Commits( 변화분 ) 단위 관리를 통해 ( 코드를 수정한 이유가 명확 ) 이 변화분 을 통한 Review 와 Discussion 가능 (pull-request, PATCH mail) 소스코드 품질상승 ( 다수의 버그 / 오류 미리 차단 , 추적용이 등 )
  29. 29. 소스코드 품질상승 ( 다수의 버그 / 오류 미리 차단 , 추적용이 등 ) Git 을 활용하는 오픈소스가 대표적인 증명 (IT 기업들의 높은 의존 , 소프트웨어 역사를 이끄는 ) Git 을 쓰는이유
  30. 30. Git 을 쓰는이유 소스코드 품질상승 ( 다수의 버그 / 오류 미리 차단 , 추적용이 등 ) Git 을 활용하는 오픈소스가 대표적인 증명 (IT 기업들의 높은 의존 , 소프트웨어 역사를 이끄는 ) 카카오 , NHN 엔터테이먼트 등 SW 기업들의 pull-request 방식도입
  31. 31. Git 을 쓰는이유 소스코드 품질상승 ( 다수의 버그 / 오류 미리 차단 , 추적용이 등 ) Git 을 활용하는 오픈소스가 대표적인 증명 (IT 기업들의 높은 의존 , 소프트웨어 역사를 이끄는 ) Junior 개발자 교육 효과 ( 프로개발자의 코드를 볼수 있는 기회 ) 카카오 , NHN 엔터테이먼트 등 SW 기업들의 pull-request 방식도입
  32. 32. Opensource 오픈소스와 컨트리뷰션 Git 이란 (What) Git 활용과 응용 (How) 오픈소스 (Advanced) Git, Github 쓰는 이유 (Why) 우리 프로젝트와 Git (Apply)
  33. 33. Github 란 각종 Remote repository ( 원격저장소 ) 들의 집합소 Git 이라는 도구를 응용한 사이트
  34. 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. 35. Not Github Gitub 가 아닌 remote repo 관리 사이트 https://git.kernel.org
  36. 36. Opensource 각종 오픈소스 전세계 각종 오픈소스 통계 사이트 (https://www.openhub.net/)
  37. 37. 오픈소스 커미터 개인별 통계 뷰 (https://www.openhub.net/accounts/namhyung) Opensource 각종 오픈소스에 기여 통계
  38. 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. 39. 우리 프로젝트와 Git 운용 전략 Git 이란 (What) Git 활용과 응용 (How) 오픈소스 (Advanced) Git, Github 쓰는 이유 (Why) 우리 프로젝트와 Git (Apply)
  40. 40. 우리 프로젝트와 Git 운용 전략 ( 프로젝트 관리방식 ) sogang 프로젝트명 : sogang 팀원 : Taeung, Kyuho ...
  41. 41. 우리 프로젝트와 Git 운용 전략 ( 프로젝트 관리방식 ) sogang Taeung/sogang Kyuho/sogang Fork !! Fork !! 프로젝트명 : sogang 팀원 : Taeung, Kyuho ...
  42. 42. 우리 프로젝트와 Git 운용 전략 ( 프로젝트 관리방식 ) sogang Taeung/sogang Kyuho/sogang Fork !! Fork !! Pull-request !! Pull-request !! 프로젝트명 : sogang 팀원 : Taeung, Kyuho ... 'fixes' branch 'features' branch
  43. 43. 우리 프로젝트와 Git 운용 전략 ( 프로젝트 관리방식 ) sogang Taeung/sogang Kyuho/sogang Fork !! Fork !! Pull-request !! Pull-request !! Maintainer 의 review 함께 discussion 프로젝트명 : sogang 팀원 : Taeung, Kyuho ... 'fixes' branch 'features' branch
  44. 44. 우리 프로젝트와 Git 운용 전략 (pull-request 방법 ) http://www.gulistanboylu.com/how-to-send-pull-request-on-github/ (git 훈련 자료 ) https://github.com/taeung/git-training
  45. 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 는 안하고 합친다 .
  46. 46. Other questions ?

×