SlideShare a Scribd company logo
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!

More Related Content

What's hot

Git best practices workshop
Git best practices workshopGit best practices workshop
Git best practices workshop
Otto Kekäläinen
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk
 
git, 이해부터 활용까지
git, 이해부터 활용까지git, 이해부터 활용까지
git, 이해부터 활용까지
jylee1229
 
오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기
용호 최
 
The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with Git
E Carter
 
Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
Noa Harel
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
민태 김
 
Intro to Git, GitHub, and BitBucket
Intro to Git, GitHub, and BitBucketIntro to Git, GitHub, and BitBucket
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
선협 이
 
Git vs svn
Git vs svnGit vs svn
Git vs svn
Rupesh Kumar
 
BuildKitでLazy Pullを有効にしてビルドを早くする話
BuildKitでLazy Pullを有効にしてビルドを早くする話BuildKitでLazy Pullを有効にしてビルドを早くする話
BuildKitでLazy Pullを有効にしてビルドを早くする話
Kohei Tokunaga
 
GitHub Actions in action
GitHub Actions in actionGitHub Actions in action
GitHub Actions in action
Oleksii Holub
 
Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)
Junyoung Lee
 
Git Tutorial I
Git Tutorial IGit Tutorial I
Git Tutorial I
Jim Yeh
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
devCAT Studio, NEXON
 
초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub
Yurim Jin
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
Venkat Malladi
 
Git n git hub
Git n git hubGit n git hub
Git n git hub
Jiwon Baek
 
Simply your Jenkins Projects with Docker Multi-Stage Builds
Simply your Jenkins Projects with Docker Multi-Stage BuildsSimply your Jenkins Projects with Docker Multi-Stage Builds
Simply your Jenkins Projects with Docker Multi-Stage Builds
Eric Smalling
 

What's hot (20)

Git best practices workshop
Git best practices workshopGit best practices workshop
Git best practices workshop
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
git, 이해부터 활용까지
git, 이해부터 활용까지git, 이해부터 활용까지
git, 이해부터 활용까지
 
오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기
 
The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with Git
 
Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
 
Intro to Git, GitHub, and BitBucket
Intro to Git, GitHub, and BitBucketIntro to Git, GitHub, and BitBucket
Intro to Git, GitHub, and BitBucket
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
Git vs svn
Git vs svnGit vs svn
Git vs svn
 
BuildKitでLazy Pullを有効にしてビルドを早くする話
BuildKitでLazy Pullを有効にしてビルドを早くする話BuildKitでLazy Pullを有効にしてビルドを早くする話
BuildKitでLazy Pullを有効にしてビルドを早くする話
 
Git and Github
Git and GithubGit and Github
Git and Github
 
GitHub Actions in action
GitHub Actions in actionGitHub Actions in action
GitHub Actions in action
 
Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)
 
Git Tutorial I
Git Tutorial IGit Tutorial I
Git Tutorial I
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
 
초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
 
Git n git hub
Git n git hubGit n git hub
Git n git hub
 
Simply your Jenkins Projects with Docker Multi-Stage Builds
Simply your Jenkins Projects with Docker Multi-Stage BuildsSimply your Jenkins Projects with Docker Multi-Stage Builds
Simply your Jenkins Projects with Docker Multi-Stage Builds
 

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

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
Hansol Lim
 
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
NAVER D2
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기
nexusz99
 
Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3
XpressEngine
 
오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료
BJ Jang
 
알아두면 쓸모있는 깃허브 1
알아두면 쓸모있는 깃허브 1알아두면 쓸모있는 깃허브 1
알아두면 쓸모있는 깃허브 1
Hansol Kang
 
GITHUB와 함께 Social하게 코딩하기
GITHUB와 함께 Social하게 코딩하기GITHUB와 함께 Social하게 코딩하기
GITHUB와 함께 Social하게 코딩하기Young-Ho Cha
 
리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기
Wooyoung Ko
 
디자이너 버전관리
디자이너 버전관리디자이너 버전관리
디자이너 버전관리
Hailey Lee
 
[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 lecture1
Git lecture1Git lecture1
Git lecture1
ssuseraf62e91
 
Why use git
Why use gitWhy use git
Why use git
Taeung Song
 
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습 [숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
Soongsil University
 
소스트리(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 발표자료
지원 정
 
Git & GitHub
Git & GitHubGit & GitHub
Git & GitHub
Jongmin Park
 
Github? linux? 이건 뭐지?
Github? linux? 이건 뭐지?Github? linux? 이건 뭐지?
Github? linux? 이건 뭐지?
Suho Lee
 

Similar to [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
 
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기
 
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
 
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 발표자료
 
Git & GitHub
Git & GitHubGit & GitHub
Git & GitHub
 
Github? linux? 이건 뭐지?
Github? linux? 이건 뭐지?Github? linux? 이건 뭐지?
Github? linux? 이건 뭐지?
 

More from Ian Choi

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
Ian Choi
 
클라우드 컴퓨팅 기본 사항 (Fundamentals)
클라우드 컴퓨팅 기본 사항 (Fundamentals)클라우드 컴퓨팅 기본 사항 (Fundamentals)
클라우드 컴퓨팅 기본 사항 (Fundamentals)
Ian Choi
 
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
Ian Choi
 
마이크로소프트 애저 및 클라우드 트렌드 소개 (부제: Beyond IaaS)
마이크로소프트 애저 및 클라우드 트렌드 소개 (부제: Beyond IaaS)마이크로소프트 애저 및 클라우드 트렌드 소개 (부제: Beyond IaaS)
마이크로소프트 애저 및 클라우드 트렌드 소개 (부제: Beyond IaaS)
Ian Choi
 
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...
Ian Choi
 
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
Ian Choi
 
오픈 소스 프로그래밍 - NoSQL with Python
오픈 소스 프로그래밍 - NoSQL with Python오픈 소스 프로그래밍 - NoSQL with Python
오픈 소스 프로그래밍 - NoSQL with Python
Ian Choi
 
Azure 클라우드 학생 계정 & Ubuntu VM 셋업 (Mar 2022)
Azure 클라우드 학생 계정 & Ubuntu VM 셋업 (Mar 2022)Azure 클라우드 학생 계정 & Ubuntu VM 셋업 (Mar 2022)
Azure 클라우드 학생 계정 & Ubuntu VM 셋업 (Mar 2022)
Ian Choi
 
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 ...
Ian Choi
 
[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...
Ian Choi
 
Microsoft loves communities - Korea DevRel Team
Microsoft loves communities - Korea DevRel TeamMicrosoft loves communities - Korea DevRel Team
Microsoft loves communities - Korea DevRel Team
Ian Choi
 
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
Ian Choi
 
국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우
국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우
국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우
Ian Choi
 
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
Ian Choi
 
[2018 KOSSLAB 컨트리뷰톤] 오픈스택 (OpenStack) 프로젝트 소개 + 업스트림 컨트리뷰션
[2018 KOSSLAB 컨트리뷰톤] 오픈스택 (OpenStack) 프로젝트 소개 + 업스트림 컨트리뷰션[2018 KOSSLAB 컨트리뷰톤] 오픈스택 (OpenStack) 프로젝트 소개 + 업스트림 컨트리뷰션
[2018 KOSSLAB 컨트리뷰톤] 오픈스택 (OpenStack) 프로젝트 소개 + 업스트림 컨트리뷰션
Ian Choi
 
[2018 공개SW그랜드챌린지] 오픈 인프라와 오픈 커뮤니티에서의 협력
[2018 공개SW그랜드챌린지] 오픈 인프라와 오픈 커뮤니티에서의 협력[2018 공개SW그랜드챌린지] 오픈 인프라와 오픈 커뮤니티에서의 협력
[2018 공개SW그랜드챌린지] 오픈 인프라와 오픈 커뮤니티에서의 협력
Ian Choi
 
OpenStack 2018 Vancouver Summit 후기
OpenStack 2018 Vancouver Summit 후기OpenStack 2018 Vancouver Summit 후기
OpenStack 2018 Vancouver Summit 후기
Ian Choi
 
"docs.microsoft.com"에 기여하기
"docs.microsoft.com"에 기여하기"docs.microsoft.com"에 기여하기
"docs.microsoft.com"에 기여하기
Ian Choi
 
[Pycon KR 2017] Rst와 함께하는 Python 문서 작성 & OpenStack 문서 활용 사례
[Pycon KR 2017] Rst와 함께하는 Python 문서 작성 & OpenStack 문서 활용 사례[Pycon KR 2017] Rst와 함께하는 Python 문서 작성 & OpenStack 문서 활용 사례
[Pycon KR 2017] Rst와 함께하는 Python 문서 작성 & OpenStack 문서 활용 사례
Ian Choi
 
명령 프롬프트, Azure CLI 2.0은 과연 코딩일까?
명령 프롬프트, Azure CLI 2.0은 과연 코딩일까?명령 프롬프트, Azure CLI 2.0은 과연 코딩일까?
명령 프롬프트, Azure CLI 2.0은 과연 코딩일까?
Ian Choi
 

More from 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 프로젝트를 위한 내용 (둘 다 추가도 가능)