SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
2018년 8월, 서울시 앱 공모전 오픈소스 교육
최영락 (E-mail: ianyrchoi@gmail.com)
2
목차
• 볼만한 자료들
• Git는 무엇일까?
• GitHub는 무엇일까?
• GitHub 협업 활용 예시 (Demo)
• 모바일 앱 개발 시나리오 (iOS, Android, Fusetools, …)
• 새로 프로젝트를 만드는 경우
• 이미 만들어진 프로젝트를 가져와 작업하는 경우
3
볼만한 자료들 – (1)
• 사실, git와 관련된 좋은 책도 많고, 인터넷에 좋은 자료들도 많습니다.
• 몇 가지 책 (검색/간단히만 살펴본 것입니다)
이미지 출처: yes24.com, 한빛미디어 (리얼타임)
4
볼만한 자료들 – (2)
• 튜토리얼
• Git을 시작하기 위한 간편 안내서, 어렵지 않아요!
• http://rogerdudler.github.io/git-guide/index.ko.html
• Git-scm: http://git-scm.com/book/ko/v1
• Atlassian git tutorial (영문): https://www.atlassian.com/git/
• 그림과 함께 배워보는 튜토리얼: https://learngitbranching.js.org/?locale=ko
• 한글 슬라이드
• 버전 관리를 들어본 적 없는 사람들을 위한 DVCS – Git
• http://www.slideshare.net/ibare/dvcs-git
• Svn 능력자를 위한 git 개념 가이드
• http://www.slideshare.net/einsub/svn-git-17386752
• Subversion vs. Git: 엄청난 간략 비교
• http://www.slideshare.net/ienvyou/subversion-vs-git-42605130
5
그럼, 이 발표의 목적은?
• 오픈 소스에서 왜 Git을 많이 사용할까?
• GitHub도 있던데, Git하고 같은 걸까?
• 자료 읽다보니 명령어들이 많은데.. Git을 알려면 이 명령어들을 꼭 다 알아야
할까?
• Branch, Tag 이런 것들은 무엇일까?
• Merge와 Rebase도 있던데..
• Pull, Push, Pull Request?
• …
+ 모바일 앱 개발과 관련한 Git / GitHub 이야기를 더 하고 싶었습니다 ☺
6
(시작하기 전, 한 가지 참고!)
• 일부 설명들은 편의를 위해 정확한 내용을 담고 있지 않을 수도 있습니다.
• 해당 부분을 보신 분께서는, 또는 덧붙이고 싶은 내용이 있으신 분께서는
ianyrchoi@gmail.com 으로 알려주시면 내용을 수정/보완하고자 합니다. ☺
7
Git는 무엇일까?
• Git
• 버전 관리를 위한 도구
• 리눅스 커널의 창시자, 리누스 토발스께서 직접 만드심
• BitKeeper라는 상용 도구를 무료 사용하여 버전 관리를 했었는데 무료 사용이 제고되면서 직접
만들게 되었다고 함
이미지 출처: http://izquotes.com/quote/273567
8
질문1: 버전 관리란 무엇인가요?
• 소스 하나 또는 묶음을 하나의 버전으로 간주하여 관리합니다.
• 파일/폴더를 추가/수정/삭제하여 사람이 직접 묶음을 버전으로 관리하자고 지정
• 원하는 때 예전 버전 내용 전체를 되돌려 볼 수 있음
• 특히 복잡한 코드 개발할 때는 이전 버전과 비교해 보기가 쉬워짐
파일 1개 또는
여러 개 수정
파일 1개 또는
여러 개 수정
(버전 1)
(버전 2)
(버전 3)
9
질문2. 버전 관리를 대체 언제 사용하나요?
1) 개발 협업을 위해 사용합니다.
• 전체 개발 소스를 공유하면서 개발 파트를
나누어 공유
• 같은 모듈을 개발하더라도 소스를 서로
공유하면서 개발
• 이 때, 특정 파일은 변경하지 못하도록 lock을
걸 수도 있습니다 (이걸로 퇴근 못하는 직원 분들도 꽤…)
• 권한 설정을 통해 각 개발자 별로 접근 가능한 소스 목록도 제어하기도 합니다.
2) 개별적으로 버전 등 이력을 관리하기 위해 사용하는 경우도 있습니다.
3) 버전 관리되는 내역 전체를 오픈 소스로 공유하기도 합니다.
개발자
A
모듈A
개발자
B
모듈B
개발자
C
모듈A
개발 프로젝트
전체 소스
10
질문3. 다른 버전 관리 도구들은?
• 오픈 소스 버전 관리 도구
• CVS: 90년대 말 – 2000년대쯤? 아는 분들은 사용한다고 들었던 버전 관리 도구
Subversion (SVN)이 대중화되면서 쓰는 사람들이 많이 줄었던 것 같음
• Subversion (SVN): 여러 파일 업로드 중 실패 시 롤백 (원자성, atomicity),
이진 파일 지원, rename (파일 이름 변경도 이력관리) 등 CVS를 대체 가능한
많은 기능이 추가되어 많은 사용자들이 CVS에서 전환된 것으로 알고 있습니다.
오늘날과 같이 Git이 많이 사용되기 전 가장 보편화되었던 버전 관리 도구
• Mercurial: Git와 비슷한 류의 분산 버전 관리 도구라고 합니다.
• 상용 버전 관리 도구
• 제가 써 본 건 Microsoft Visual SourceSafe와 Team Foundation Server밖에..
11
질문4. ‘분산’ 버전 관리 도구는 머가 다른가요?
• 이를 설명하기 위해 보통 Subversion과 Git를 많이 비교합니다.
• Subversion은 버전 관리를 하려면 반드시 Subversion 서버와 통신하여
버전을 관리해야 합니다.
• 반면, Git는 네트워크가 되지 않아도 우선 자신의 컴퓨터에서 버전 관리를
하고 네트워크 통신이 될 때 서버와 통신해도 됩니다.
• 이런 이야기도 있었습니다.
미국의 개발자들은 인터넷이 안되는 휴양지에 가서도 Git를 이용하면 충분히 개발할 수
있고, 나중에 인터넷 되는 곳에 가서 서버와 쭉 통신하여 업무를 할 수도 있다고..
반면 한국은 인터넷이 아주 잘 되니 Git가 대중화되지 않을 수도 있겠다고…
→ 그런데, 요즘은 Git이 많이 사용되네요 ☺
12
질문5. Git 명령어들을 꼭 익혀야 하나요?
• 적어도 초창기에는 그랬습니다.
• 지금도 Git를 잘 쓰려면 명령어들을 알면 도움이 많이 됩니다.
• 요즘엔 명령어들을 몰라도 pull, push, commit 등의 기본 개념만 알면 쓸
수 있는 좋은 GUI들이 많습니다.
• TortoiseGit, gitk, Sourcetree, GitHub Desktop, …
• 그래픽 화면으로 나와 명령어보단
쓰기 편합니다. ☺
13
Git 기본 용어 – (1)
• Pull
• Git 저장소 서버로부터 내 컴퓨터 로컬로 버전 정보 전체를 가져온다.
• Commit
• 추가/수정/삭제된 폴더/파일들을 1개 버전으로 간주하여 내 컴퓨터 로컬에 버전 정보를
기록한다.
• Push
• 내 컴퓨터 로컬에 저장되어 있던 버전 정보를 Git 저장소 서버로 올린다.
14
Git 기본 용어 – (2)
• Branch
• 버전들을 묶어서 Branch라고 합니다.
• 기본은 master입니다.
• 내 컴퓨터 내에 있는 Branch는 로컬 branch, 외부 서버에 있는 Branch는 리모트
branch라고 합니다.
• Tag
• Branch는 왔다갔다하면서 각각에 대해 내용을 변경하고 버전 관리까지 가능합니다.
• 반면 Tag는 특정 버전 위치에 대해 나중에 쉽게 찾아갈 수 있도록 이름을 지정해 놓은 것
뿐입니다.
15
Git 기본 용어 – (3)
• Branch와 Tag의 사용 예시
• OpenStack neutron 소스
16
Git 기본 용어 – (4)
• Merge
• Git로 버전 관리를 하다보면 1) 여러 개발자가 각자 개발한 버전을 합치는 경우 2) 서로
다른 Branch를 하나로 합치는 경우가 생깁니다.
• 이런 경우 합치는 과정을 Merge라고 합니다.
17
Git 기본 용어 – (5)
• Rebase
• Git 과거 이력 편집 목적
• 따라서 Git 이력을 이쁘게 ☺ 정리도 가능
openstack 소스: commit 이력 ryu-book 소스: commit 이력
18
GitHub는?
• http://www.github.org
• Git 저장소를 직접 설치하지 않고 GitHub를 통해 사용 가능합니다.
• 그런데 GitHub는 단순히 Git 소스 저장소만을 의미하지는 않는다고 생각합니다.
19
몇 가지 좋은 GitHub의 기능
• 좋은 Web UI를 제공합니다.
• gh-pages Branch에 파일을
올리면 [계정명].github.io/[저장소명]
홈페이지가 완성됩니다.
• 여러 질문 & 답변, 이슈 사항을 기록하기 위한 Issues 페이지 제공
• Wiki 제공
• 월 정액으로 돈을 내면 공개되지 않은 사설 저장소 제공
• 돈을 더 내면 권한 관리가 가능한 organization 저장소 제공 (무료도 가능)
• … (너무 많아서…)
20
GitHub - fork
• 다른 사람 저장소를 가져와 제 저장소로 만들어 놓는 기능입니다.
fork
21
GitHub - fork한 다음에는?
Pull
: 업데이트
[내 컴퓨터]
(커밋도
하고..)
Pull
: 업데이트
Push
: 업로드Push
: 업로드
Fork는 누구나 가능합니다.
그러나 누구나 이 저장소를 바꾸게 되면 이상하겠죠?
22
GitHub – pull request
Pull
: 업데이트
[내 컴퓨터]
(커밋도
하고..)
Pull
: 업데이트
Push
: 업로드
Pull
request
: 검토
부탁합니다
원 저장소 소유자 또는 권한이 있는 자가 검토하여
맘에 들면 가져와서 업데이트하고, 토론/반려 등이 가능합니다.
23
GitHub 협업 활용 예시 – 모바일 앱 개발
• GitHub Desktop으로 해 봅시다: https://desktop.github.com
24
GitHub 협업 활용 예시 – 모바일 앱 개발
• 설치를 완료하면 다음과 같이 로그인하는 화면이 나타나요. 로그인하면
됩니다!
25
GitHub 협업 활용 예시 – 모바일 앱 개발
• GitHub 계정으로 로그인합니다 (이메일, 계정명 관계없음)
26
GitHub 협업 활용 예시 – 모바일 앱 개발
• 참고: 2-factor authentication이 요새는 대세입니다
27
GitHub 협업 활용 예시 – 모바일 앱 개발
• 커밋 메시지에 나타나는 사용자 이름 및 이메일 주소를 설정합니다
28
GitHub 협업 활용 예시 – 모바일 앱 개발
• 3가지 메뉴가 있습니다: GitHub에 바로 생성 / 로컬만 작업 / GitHub에서
가져오기
29
GitHub 협업 활용 예시 – 모바일 앱 개발
• 프로젝트 만들기: 이름/설명/로컬 저장 경로 + README, .gitignore, 라이선스
30
GitHub 협업 활용 예시 – 모바일 앱 개발
• 프로젝트 생성 완료 (로컬에만 나온 상태, GitHub에 아직 안 올림)
31
GitHub 협업 활용 예시 – 모바일 앱 개발
• 처음에 했던 작업 내역
(커밋/commit)
32
GitHub 협업 활용 예시 – 모바일 앱 개발
• GitHub로 올리기
33
GitHub 협업 활용 예시 – 모바일 앱 개발
• GitHub 웹 페이지에서
확인
34
GitHub 협업 활용 예시 – 모바일 앱 개발
• 로컬에서 간단히 수정을 해봅시다
35
GitHub 협업 활용 예시 – 모바일 앱 개발
• 어떤 수정을 하였는지 요약 (<50자), 상세 내용을 입력합니다 (커밋/commit)
36
GitHub 협업 활용 예시 – 모바일 앱 개발
• 로컬에 추가된 결과 (GitHub.com 웹에는 아직 미 반영)
37
GitHub 협업 활용 예시 – 모바일 앱 개발
• GitHub.com으로 퍼블리싱 (푸시/push)하여 웹에 추가가 된 상태
38
GitHub 협업 활용 예시 – 모바일 앱 개발 (요약)
• 참고할 내용
• 혼자서 개발하는 경우 vs. 여러 명이서 같이 개발하는 경우에 대한 배려
• README 파일에 잘 설명을 해야 함 (보통 README.md - Markdown 문법으로 설명)
• LICENSE 파일 명시도 필요함 (GPL, LPGL, Apache, MIT, …)
• .gitignore 파일을 잘 활용합시다! (모바일 빌드 파일은 git 관리 불필요)
• 특히 협업할 때: “빌드”가 되는 상태로 공유합시다
• 다른 사람이 이미 만들었다면: 저장소를 “클론” 후 작업을 진행
39
참고: README 파일 작성하기
• README.md 또는 README.rst 파일을 저장소 기본 폴더에 위치
• 확장자 md: 마크다운 문법
• 확장자 rst: Restructured Text 문법 (Python 프로젝트에서 주로 사용)
• 문법에 익숙하지 않은 경우 샘플 코드를 기반으로 README를 제작을 권장
40
참고: LICENSE 파일
• 오픈 소스에서는 라이선스 명시가 중요함
41
참고: .gitignore 파일
• 예: iOS와 Android 프로젝트를 위한 내용 (둘 다 추가도 가능)
Finished!

Más contenido relacionado

La actualidad más candente

HBase Read High Availabilty using Timeline Consistent Region Replicas
HBase Read High Availabilty using Timeline Consistent Region ReplicasHBase Read High Availabilty using Timeline Consistent Region Replicas
HBase Read High Availabilty using Timeline Consistent Region Replicas
DataWorks Summit
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용
흥배 최
 
클라우드 컴퓨팅 환경에서의 미터링 공개용
클라우드 컴퓨팅 환경에서의 미터링 공개용클라우드 컴퓨팅 환경에서의 미터링 공개용
클라우드 컴퓨팅 환경에서의 미터링 공개용
OnTheWheel
 

La actualidad más candente (20)

이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 
파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄
 
Build pipelines with bitbucket for Magento
Build pipelines with bitbucket for MagentoBuild pipelines with bitbucket for Magento
Build pipelines with bitbucket for Magento
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - Introduction
 
redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바
 
HBase Read High Availabilty using Timeline Consistent Region Replicas
HBase Read High Availabilty using Timeline Consistent Region ReplicasHBase Read High Availabilty using Timeline Consistent Region Replicas
HBase Read High Availabilty using Timeline Consistent Region Replicas
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
 
Caching Data in OutSystems: A Tale of Gains Without Pain
Caching Data in OutSystems: A Tale of Gains Without PainCaching Data in OutSystems: A Tale of Gains Without Pain
Caching Data in OutSystems: A Tale of Gains Without Pain
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
 
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
 
Introduction to Foreman Maintain
Introduction to Foreman MaintainIntroduction to Foreman Maintain
Introduction to Foreman Maintain
 
Git - Level 2
Git - Level 2Git - Level 2
Git - Level 2
 
클라우드 컴퓨팅 환경에서의 미터링 공개용
클라우드 컴퓨팅 환경에서의 미터링 공개용클라우드 컴퓨팅 환경에서의 미터링 공개용
클라우드 컴퓨팅 환경에서의 미터링 공개용
 
Hive Authorization
Hive AuthorizationHive Authorization
Hive Authorization
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbie
 
MongoDB Performance Tuning
MongoDB Performance TuningMongoDB Performance Tuning
MongoDB Performance Tuning
 
쉽게 쓰여진 Django
쉽게 쓰여진 Django쉽게 쓰여진 Django
쉽게 쓰여진 Django
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
 

Similar a [201808] GitHub 사용하기 - GIt & 협업 활용

GITHUB와 함께 Social하게 코딩하기
GITHUB와 함께 Social하게 코딩하기GITHUB와 함께 Social하게 코딩하기
GITHUB와 함께 Social하게 코딩하기
Young-Ho Cha
 

Similar a [201808] GitHub 사용하기 - GIt & 협업 활용 (20)

How to use Github? (For Cien)
How to use Github? (For Cien)How to use Github? (For Cien)
How to use Github? (For Cien)
 
Digging github
Digging githubDigging github
Digging github
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기
 
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
 
Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3
 
오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료
 
알아두면 쓸모있는 깃허브 1
알아두면 쓸모있는 깃허브 1알아두면 쓸모있는 깃허브 1
알아두면 쓸모있는 깃허브 1
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습
 
GITHUB와 함께 Social하게 코딩하기
GITHUB와 함께 Social하게 코딩하기GITHUB와 함께 Social하게 코딩하기
GITHUB와 함께 Social하게 코딩하기
 
리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기
 
디자이너 버전관리
디자이너 버전관리디자이너 버전관리
디자이너 버전관리
 
[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 lecture1
Git lecture1Git lecture1
Git lecture1
 
Why use git
Why use gitWhy use git
Why use git
 
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습 [숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
 
소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법
 
Git 코드랩 스터디 1
Git 코드랩 스터디 1Git 코드랩 스터디 1
Git 코드랩 스터디 1
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 
GitHub 실습 교육
GitHub 실습 교육GitHub 실습 교육
GitHub 실습 교육
 

Más de Ian Choi

Más de Ian Choi (20)

Ship it! ⛴️ AKS에 스프링 앱 배포하기 at Microsoft x GitHub Roadshow 2023
Ship it! ⛴️ AKS에 스프링 앱 배포하기 at Microsoft x GitHub Roadshow 2023Ship it! ⛴️ AKS에 스프링 앱 배포하기 at Microsoft x GitHub Roadshow 2023
Ship it! ⛴️ AKS에 스프링 앱 배포하기 at Microsoft x GitHub Roadshow 2023
 
클라우드 컴퓨팅 기본 사항 (Fundamentals)
클라우드 컴퓨팅 기본 사항 (Fundamentals)클라우드 컴퓨팅 기본 사항 (Fundamentals)
클라우드 컴퓨팅 기본 사항 (Fundamentals)
 
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
 
마이크로소프트 애저 및 클라우드 트렌드 소개 (부제: Beyond IaaS)
마이크로소프트 애저 및 클라우드 트렌드 소개 (부제: Beyond IaaS)마이크로소프트 애저 및 클라우드 트렌드 소개 (부제: Beyond IaaS)
마이크로소프트 애저 및 클라우드 트렌드 소개 (부제: Beyond IaaS)
 
Evolving Translation and Internationalization in OpenStack & Kubernetes commu...
Evolving Translation and Internationalization in OpenStack & Kubernetes commu...Evolving Translation and Internationalization in OpenStack & Kubernetes commu...
Evolving Translation and Internationalization in OpenStack & Kubernetes commu...
 
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
 
오픈 소스 프로그래밍 - NoSQL with Python
오픈 소스 프로그래밍 - NoSQL with Python오픈 소스 프로그래밍 - NoSQL with Python
오픈 소스 프로그래밍 - NoSQL with Python
 
Azure 클라우드 학생 계정 & Ubuntu VM 셋업 (Mar 2022)
Azure 클라우드 학생 계정 & Ubuntu VM 셋업 (Mar 2022)Azure 클라우드 학생 계정 & Ubuntu VM 셋업 (Mar 2022)
Azure 클라우드 학생 계정 & Ubuntu VM 셋업 (Mar 2022)
 
OpenStack I18n Product Update at Shanghai: how OpenStack translation started ...
OpenStack I18n Product Update at Shanghai: how OpenStack translation started ...OpenStack I18n Product Update at Shanghai: how OpenStack translation started ...
OpenStack I18n Product Update at Shanghai: how OpenStack translation started ...
 
[OpenInfra Days Vietnam 2019] Innovation with open sources and app modernizat...
[OpenInfra Days Vietnam 2019] Innovation with open sources and app modernizat...[OpenInfra Days Vietnam 2019] Innovation with open sources and app modernizat...
[OpenInfra Days Vietnam 2019] Innovation with open sources and app modernizat...
 
Microsoft loves communities - Korea DevRel Team
Microsoft loves communities - Korea DevRel TeamMicrosoft loves communities - Korea DevRel Team
Microsoft loves communities - Korea DevRel Team
 
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
 
국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우
국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우
국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우
 
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
 
[2018 KOSSLAB 컨트리뷰톤] 오픈스택 (OpenStack) 프로젝트 소개 + 업스트림 컨트리뷰션
[2018 KOSSLAB 컨트리뷰톤] 오픈스택 (OpenStack) 프로젝트 소개 + 업스트림 컨트리뷰션[2018 KOSSLAB 컨트리뷰톤] 오픈스택 (OpenStack) 프로젝트 소개 + 업스트림 컨트리뷰션
[2018 KOSSLAB 컨트리뷰톤] 오픈스택 (OpenStack) 프로젝트 소개 + 업스트림 컨트리뷰션
 
[2018 공개SW그랜드챌린지] 오픈 인프라와 오픈 커뮤니티에서의 협력
[2018 공개SW그랜드챌린지] 오픈 인프라와 오픈 커뮤니티에서의 협력[2018 공개SW그랜드챌린지] 오픈 인프라와 오픈 커뮤니티에서의 협력
[2018 공개SW그랜드챌린지] 오픈 인프라와 오픈 커뮤니티에서의 협력
 
OpenStack 2018 Vancouver Summit 후기
OpenStack 2018 Vancouver Summit 후기OpenStack 2018 Vancouver Summit 후기
OpenStack 2018 Vancouver Summit 후기
 
"docs.microsoft.com"에 기여하기
"docs.microsoft.com"에 기여하기"docs.microsoft.com"에 기여하기
"docs.microsoft.com"에 기여하기
 
[Pycon KR 2017] Rst와 함께하는 Python 문서 작성 & OpenStack 문서 활용 사례
[Pycon KR 2017] Rst와 함께하는 Python 문서 작성 & OpenStack 문서 활용 사례[Pycon KR 2017] Rst와 함께하는 Python 문서 작성 & OpenStack 문서 활용 사례
[Pycon KR 2017] Rst와 함께하는 Python 문서 작성 & OpenStack 문서 활용 사례
 
명령 프롬프트, Azure CLI 2.0은 과연 코딩일까?
명령 프롬프트, Azure CLI 2.0은 과연 코딩일까?명령 프롬프트, Azure CLI 2.0은 과연 코딩일까?
명령 프롬프트, Azure CLI 2.0은 과연 코딩일까?
 

[201808] GitHub 사용하기 - GIt & 협업 활용

  • 1. 2018년 8월, 서울시 앱 공모전 오픈소스 교육 최영락 (E-mail: ianyrchoi@gmail.com)
  • 2. 2 목차 • 볼만한 자료들 • Git는 무엇일까? • GitHub는 무엇일까? • GitHub 협업 활용 예시 (Demo) • 모바일 앱 개발 시나리오 (iOS, Android, Fusetools, …) • 새로 프로젝트를 만드는 경우 • 이미 만들어진 프로젝트를 가져와 작업하는 경우
  • 3. 3 볼만한 자료들 – (1) • 사실, git와 관련된 좋은 책도 많고, 인터넷에 좋은 자료들도 많습니다. • 몇 가지 책 (검색/간단히만 살펴본 것입니다) 이미지 출처: yes24.com, 한빛미디어 (리얼타임)
  • 4. 4 볼만한 자료들 – (2) • 튜토리얼 • Git을 시작하기 위한 간편 안내서, 어렵지 않아요! • http://rogerdudler.github.io/git-guide/index.ko.html • Git-scm: http://git-scm.com/book/ko/v1 • Atlassian git tutorial (영문): https://www.atlassian.com/git/ • 그림과 함께 배워보는 튜토리얼: https://learngitbranching.js.org/?locale=ko • 한글 슬라이드 • 버전 관리를 들어본 적 없는 사람들을 위한 DVCS – Git • http://www.slideshare.net/ibare/dvcs-git • Svn 능력자를 위한 git 개념 가이드 • http://www.slideshare.net/einsub/svn-git-17386752 • Subversion vs. Git: 엄청난 간략 비교 • http://www.slideshare.net/ienvyou/subversion-vs-git-42605130
  • 5. 5 그럼, 이 발표의 목적은? • 오픈 소스에서 왜 Git을 많이 사용할까? • GitHub도 있던데, Git하고 같은 걸까? • 자료 읽다보니 명령어들이 많은데.. Git을 알려면 이 명령어들을 꼭 다 알아야 할까? • Branch, Tag 이런 것들은 무엇일까? • Merge와 Rebase도 있던데.. • Pull, Push, Pull Request? • … + 모바일 앱 개발과 관련한 Git / GitHub 이야기를 더 하고 싶었습니다 ☺
  • 6. 6 (시작하기 전, 한 가지 참고!) • 일부 설명들은 편의를 위해 정확한 내용을 담고 있지 않을 수도 있습니다. • 해당 부분을 보신 분께서는, 또는 덧붙이고 싶은 내용이 있으신 분께서는 ianyrchoi@gmail.com 으로 알려주시면 내용을 수정/보완하고자 합니다. ☺
  • 7. 7 Git는 무엇일까? • Git • 버전 관리를 위한 도구 • 리눅스 커널의 창시자, 리누스 토발스께서 직접 만드심 • BitKeeper라는 상용 도구를 무료 사용하여 버전 관리를 했었는데 무료 사용이 제고되면서 직접 만들게 되었다고 함 이미지 출처: http://izquotes.com/quote/273567
  • 8. 8 질문1: 버전 관리란 무엇인가요? • 소스 하나 또는 묶음을 하나의 버전으로 간주하여 관리합니다. • 파일/폴더를 추가/수정/삭제하여 사람이 직접 묶음을 버전으로 관리하자고 지정 • 원하는 때 예전 버전 내용 전체를 되돌려 볼 수 있음 • 특히 복잡한 코드 개발할 때는 이전 버전과 비교해 보기가 쉬워짐 파일 1개 또는 여러 개 수정 파일 1개 또는 여러 개 수정 (버전 1) (버전 2) (버전 3)
  • 9. 9 질문2. 버전 관리를 대체 언제 사용하나요? 1) 개발 협업을 위해 사용합니다. • 전체 개발 소스를 공유하면서 개발 파트를 나누어 공유 • 같은 모듈을 개발하더라도 소스를 서로 공유하면서 개발 • 이 때, 특정 파일은 변경하지 못하도록 lock을 걸 수도 있습니다 (이걸로 퇴근 못하는 직원 분들도 꽤…) • 권한 설정을 통해 각 개발자 별로 접근 가능한 소스 목록도 제어하기도 합니다. 2) 개별적으로 버전 등 이력을 관리하기 위해 사용하는 경우도 있습니다. 3) 버전 관리되는 내역 전체를 오픈 소스로 공유하기도 합니다. 개발자 A 모듈A 개발자 B 모듈B 개발자 C 모듈A 개발 프로젝트 전체 소스
  • 10. 10 질문3. 다른 버전 관리 도구들은? • 오픈 소스 버전 관리 도구 • CVS: 90년대 말 – 2000년대쯤? 아는 분들은 사용한다고 들었던 버전 관리 도구 Subversion (SVN)이 대중화되면서 쓰는 사람들이 많이 줄었던 것 같음 • Subversion (SVN): 여러 파일 업로드 중 실패 시 롤백 (원자성, atomicity), 이진 파일 지원, rename (파일 이름 변경도 이력관리) 등 CVS를 대체 가능한 많은 기능이 추가되어 많은 사용자들이 CVS에서 전환된 것으로 알고 있습니다. 오늘날과 같이 Git이 많이 사용되기 전 가장 보편화되었던 버전 관리 도구 • Mercurial: Git와 비슷한 류의 분산 버전 관리 도구라고 합니다. • 상용 버전 관리 도구 • 제가 써 본 건 Microsoft Visual SourceSafe와 Team Foundation Server밖에..
  • 11. 11 질문4. ‘분산’ 버전 관리 도구는 머가 다른가요? • 이를 설명하기 위해 보통 Subversion과 Git를 많이 비교합니다. • Subversion은 버전 관리를 하려면 반드시 Subversion 서버와 통신하여 버전을 관리해야 합니다. • 반면, Git는 네트워크가 되지 않아도 우선 자신의 컴퓨터에서 버전 관리를 하고 네트워크 통신이 될 때 서버와 통신해도 됩니다. • 이런 이야기도 있었습니다. 미국의 개발자들은 인터넷이 안되는 휴양지에 가서도 Git를 이용하면 충분히 개발할 수 있고, 나중에 인터넷 되는 곳에 가서 서버와 쭉 통신하여 업무를 할 수도 있다고.. 반면 한국은 인터넷이 아주 잘 되니 Git가 대중화되지 않을 수도 있겠다고… → 그런데, 요즘은 Git이 많이 사용되네요 ☺
  • 12. 12 질문5. Git 명령어들을 꼭 익혀야 하나요? • 적어도 초창기에는 그랬습니다. • 지금도 Git를 잘 쓰려면 명령어들을 알면 도움이 많이 됩니다. • 요즘엔 명령어들을 몰라도 pull, push, commit 등의 기본 개념만 알면 쓸 수 있는 좋은 GUI들이 많습니다. • TortoiseGit, gitk, Sourcetree, GitHub Desktop, … • 그래픽 화면으로 나와 명령어보단 쓰기 편합니다. ☺
  • 13. 13 Git 기본 용어 – (1) • Pull • Git 저장소 서버로부터 내 컴퓨터 로컬로 버전 정보 전체를 가져온다. • Commit • 추가/수정/삭제된 폴더/파일들을 1개 버전으로 간주하여 내 컴퓨터 로컬에 버전 정보를 기록한다. • Push • 내 컴퓨터 로컬에 저장되어 있던 버전 정보를 Git 저장소 서버로 올린다.
  • 14. 14 Git 기본 용어 – (2) • Branch • 버전들을 묶어서 Branch라고 합니다. • 기본은 master입니다. • 내 컴퓨터 내에 있는 Branch는 로컬 branch, 외부 서버에 있는 Branch는 리모트 branch라고 합니다. • Tag • Branch는 왔다갔다하면서 각각에 대해 내용을 변경하고 버전 관리까지 가능합니다. • 반면 Tag는 특정 버전 위치에 대해 나중에 쉽게 찾아갈 수 있도록 이름을 지정해 놓은 것 뿐입니다.
  • 15. 15 Git 기본 용어 – (3) • Branch와 Tag의 사용 예시 • OpenStack neutron 소스
  • 16. 16 Git 기본 용어 – (4) • Merge • Git로 버전 관리를 하다보면 1) 여러 개발자가 각자 개발한 버전을 합치는 경우 2) 서로 다른 Branch를 하나로 합치는 경우가 생깁니다. • 이런 경우 합치는 과정을 Merge라고 합니다.
  • 17. 17 Git 기본 용어 – (5) • Rebase • Git 과거 이력 편집 목적 • 따라서 Git 이력을 이쁘게 ☺ 정리도 가능 openstack 소스: commit 이력 ryu-book 소스: commit 이력
  • 18. 18 GitHub는? • http://www.github.org • Git 저장소를 직접 설치하지 않고 GitHub를 통해 사용 가능합니다. • 그런데 GitHub는 단순히 Git 소스 저장소만을 의미하지는 않는다고 생각합니다.
  • 19. 19 몇 가지 좋은 GitHub의 기능 • 좋은 Web UI를 제공합니다. • gh-pages Branch에 파일을 올리면 [계정명].github.io/[저장소명] 홈페이지가 완성됩니다. • 여러 질문 & 답변, 이슈 사항을 기록하기 위한 Issues 페이지 제공 • Wiki 제공 • 월 정액으로 돈을 내면 공개되지 않은 사설 저장소 제공 • 돈을 더 내면 권한 관리가 가능한 organization 저장소 제공 (무료도 가능) • … (너무 많아서…)
  • 20. 20 GitHub - fork • 다른 사람 저장소를 가져와 제 저장소로 만들어 놓는 기능입니다. fork
  • 21. 21 GitHub - fork한 다음에는? Pull : 업데이트 [내 컴퓨터] (커밋도 하고..) Pull : 업데이트 Push : 업로드Push : 업로드 Fork는 누구나 가능합니다. 그러나 누구나 이 저장소를 바꾸게 되면 이상하겠죠?
  • 22. 22 GitHub – pull request Pull : 업데이트 [내 컴퓨터] (커밋도 하고..) Pull : 업데이트 Push : 업로드 Pull request : 검토 부탁합니다 원 저장소 소유자 또는 권한이 있는 자가 검토하여 맘에 들면 가져와서 업데이트하고, 토론/반려 등이 가능합니다.
  • 23. 23 GitHub 협업 활용 예시 – 모바일 앱 개발 • GitHub Desktop으로 해 봅시다: https://desktop.github.com
  • 24. 24 GitHub 협업 활용 예시 – 모바일 앱 개발 • 설치를 완료하면 다음과 같이 로그인하는 화면이 나타나요. 로그인하면 됩니다!
  • 25. 25 GitHub 협업 활용 예시 – 모바일 앱 개발 • GitHub 계정으로 로그인합니다 (이메일, 계정명 관계없음)
  • 26. 26 GitHub 협업 활용 예시 – 모바일 앱 개발 • 참고: 2-factor authentication이 요새는 대세입니다
  • 27. 27 GitHub 협업 활용 예시 – 모바일 앱 개발 • 커밋 메시지에 나타나는 사용자 이름 및 이메일 주소를 설정합니다
  • 28. 28 GitHub 협업 활용 예시 – 모바일 앱 개발 • 3가지 메뉴가 있습니다: GitHub에 바로 생성 / 로컬만 작업 / GitHub에서 가져오기
  • 29. 29 GitHub 협업 활용 예시 – 모바일 앱 개발 • 프로젝트 만들기: 이름/설명/로컬 저장 경로 + README, .gitignore, 라이선스
  • 30. 30 GitHub 협업 활용 예시 – 모바일 앱 개발 • 프로젝트 생성 완료 (로컬에만 나온 상태, GitHub에 아직 안 올림)
  • 31. 31 GitHub 협업 활용 예시 – 모바일 앱 개발 • 처음에 했던 작업 내역 (커밋/commit)
  • 32. 32 GitHub 협업 활용 예시 – 모바일 앱 개발 • GitHub로 올리기
  • 33. 33 GitHub 협업 활용 예시 – 모바일 앱 개발 • GitHub 웹 페이지에서 확인
  • 34. 34 GitHub 협업 활용 예시 – 모바일 앱 개발 • 로컬에서 간단히 수정을 해봅시다
  • 35. 35 GitHub 협업 활용 예시 – 모바일 앱 개발 • 어떤 수정을 하였는지 요약 (<50자), 상세 내용을 입력합니다 (커밋/commit)
  • 36. 36 GitHub 협업 활용 예시 – 모바일 앱 개발 • 로컬에 추가된 결과 (GitHub.com 웹에는 아직 미 반영)
  • 37. 37 GitHub 협업 활용 예시 – 모바일 앱 개발 • GitHub.com으로 퍼블리싱 (푸시/push)하여 웹에 추가가 된 상태
  • 38. 38 GitHub 협업 활용 예시 – 모바일 앱 개발 (요약) • 참고할 내용 • 혼자서 개발하는 경우 vs. 여러 명이서 같이 개발하는 경우에 대한 배려 • README 파일에 잘 설명을 해야 함 (보통 README.md - Markdown 문법으로 설명) • LICENSE 파일 명시도 필요함 (GPL, LPGL, Apache, MIT, …) • .gitignore 파일을 잘 활용합시다! (모바일 빌드 파일은 git 관리 불필요) • 특히 협업할 때: “빌드”가 되는 상태로 공유합시다 • 다른 사람이 이미 만들었다면: 저장소를 “클론” 후 작업을 진행
  • 39. 39 참고: README 파일 작성하기 • README.md 또는 README.rst 파일을 저장소 기본 폴더에 위치 • 확장자 md: 마크다운 문법 • 확장자 rst: Restructured Text 문법 (Python 프로젝트에서 주로 사용) • 문법에 익숙하지 않은 경우 샘플 코드를 기반으로 README를 제작을 권장
  • 40. 40 참고: LICENSE 파일 • 오픈 소스에서는 라이선스 명시가 중요함
  • 41. 41 참고: .gitignore 파일 • 예: iOS와 Android 프로젝트를 위한 내용 (둘 다 추가도 가능)