GitHub로 프로젝트 운영하기
-시스템소프트웨어 연구실 이건희
목차
-깃허브란?
-Repository 활용하기
-branches, releases
-깃허브 프로젝트 문서화
깃허브란?
• 깃(Git)을 사용하는 프로젝트를 지원하는 웹호스팅 서비스
• 다른 사람들과의 협업을 매우 용이하게 해줌
Repository 활용하기
Issue , Pull requests
• Issue 카테고리는 왜 사용하는가요?
• 버그를 기록하거나 요구사항을 전달할려고 사용
• Pull requests 카테고리는 왜 사용하는가요?
• 현재 진행중인 작업이 무엇인지 알게해줌. • 수정사항을 Merge 시킬 때 사용.
Pull requests로 넣은 수정사항이 Merge됨에 따라 Contributor가 될 수 있습니다!
branches, releases
branches
• 테스트 해보거나 새로운 기능을 개발하기 위해 사용하는 독립적인 commit
• Master branch : 기본 branch이자, 최종적으로 마무리 되는 branch
깃허브 문서화
README
• 해당 프로젝트의 개요나 설명, 설치법에 대해서 설명
• ‘README.md’ 파일을 인식
README’s Labels
• Badge images • Custom badge
https://shields.io/
README’s Labels
• Travis CI
• Continuous Integration : 푸시할 때 자동화된 빌드 및 테스트가 실 행되고 소프트웨어 품질을 향상시키는 개발 방식
• https://travis-ci.org/
Issue & Pull requests Template
• Maintainer에게 좀 더 정확하 게 의견을 전달하기 위해 만듬
• Insights > Comminuty 에서 추가 가능
LICENSE
네이버 오픈소스 가이드 https://naver.github.io/OpenSourceGuide/book/
그 외의 Community profile
• Code of conduct
• Contributing guidelines
그 외에 프로젝트 관리에 도움되는 것
OpenHub 어플리케이션
Git Bash (Git bash 사용법 : http://gbsb.tistory.com/10)
GitHub Desktop
참고
• 네이버 오픈소스 가이드 https://naver.github.io/OpenSourceGuide/book/
• 실제로 사용한 프로젝트 https://github.com/kuj0210/IoT-Pet-Home-System
2018년 서울시 앱 공모전 (URL: https://mplatform.seoul.go.kr )에서 GitHub 설명을 위한 자료입니다. 이전 https://www.slideshare.net/ianychoi/git-github-46020592 자료에 모바일 앱 개발 환경 및 GitHub Desktop 프로그램에 대한 부분을 추가하였습니다.
[17.02.09] Github introduction (Korean Version)Ildoo Kim
Git 혹은 소스코드 형상관리를 아예 모르는 사람을 대상으로 작성한 Starter Guide입니다. 팀에 새로운 사람이 Join하는 등의 경우에 세미나 자료로 활용합니다.
형상관리/git 개념과 command line 혹은 source tree를 활용한 기본적인 사용 방법에 대해 소개합니다.
<팀을>이라는 책을 많이 참고하였습니다.
GitHub로 프로젝트 운영하기
-시스템소프트웨어 연구실 이건희
목차
-깃허브란?
-Repository 활용하기
-branches, releases
-깃허브 프로젝트 문서화
깃허브란?
• 깃(Git)을 사용하는 프로젝트를 지원하는 웹호스팅 서비스
• 다른 사람들과의 협업을 매우 용이하게 해줌
Repository 활용하기
Issue , Pull requests
• Issue 카테고리는 왜 사용하는가요?
• 버그를 기록하거나 요구사항을 전달할려고 사용
• Pull requests 카테고리는 왜 사용하는가요?
• 현재 진행중인 작업이 무엇인지 알게해줌. • 수정사항을 Merge 시킬 때 사용.
Pull requests로 넣은 수정사항이 Merge됨에 따라 Contributor가 될 수 있습니다!
branches, releases
branches
• 테스트 해보거나 새로운 기능을 개발하기 위해 사용하는 독립적인 commit
• Master branch : 기본 branch이자, 최종적으로 마무리 되는 branch
깃허브 문서화
README
• 해당 프로젝트의 개요나 설명, 설치법에 대해서 설명
• ‘README.md’ 파일을 인식
README’s Labels
• Badge images • Custom badge
https://shields.io/
README’s Labels
• Travis CI
• Continuous Integration : 푸시할 때 자동화된 빌드 및 테스트가 실 행되고 소프트웨어 품질을 향상시키는 개발 방식
• https://travis-ci.org/
Issue & Pull requests Template
• Maintainer에게 좀 더 정확하 게 의견을 전달하기 위해 만듬
• Insights > Comminuty 에서 추가 가능
LICENSE
네이버 오픈소스 가이드 https://naver.github.io/OpenSourceGuide/book/
그 외의 Community profile
• Code of conduct
• Contributing guidelines
그 외에 프로젝트 관리에 도움되는 것
OpenHub 어플리케이션
Git Bash (Git bash 사용법 : http://gbsb.tistory.com/10)
GitHub Desktop
참고
• 네이버 오픈소스 가이드 https://naver.github.io/OpenSourceGuide/book/
• 실제로 사용한 프로젝트 https://github.com/kuj0210/IoT-Pet-Home-System
2018년 서울시 앱 공모전 (URL: https://mplatform.seoul.go.kr )에서 GitHub 설명을 위한 자료입니다. 이전 https://www.slideshare.net/ianychoi/git-github-46020592 자료에 모바일 앱 개발 환경 및 GitHub Desktop 프로그램에 대한 부분을 추가하였습니다.
[17.02.09] Github introduction (Korean Version)Ildoo Kim
Git 혹은 소스코드 형상관리를 아예 모르는 사람을 대상으로 작성한 Starter Guide입니다. 팀에 새로운 사람이 Join하는 등의 경우에 세미나 자료로 활용합니다.
형상관리/git 개념과 command line 혹은 source tree를 활용한 기본적인 사용 방법에 대해 소개합니다.
<팀을>이라는 책을 많이 참고하였습니다.
Source Tree로 버전 관리하는 법
- Git이 필요한 이유
- Stage(=Index에 기록)하기
- Commit하기
- Remote 추가하기
- Origin Remote로 GitHub 사용
- Push하기
- Clone하기
- Reset (Soft, Hard, Mixed)
- Revert
- Checkout, Detached HEAD
- 이전 Commit 수정하기
- Pull / Fetch&Merge하기
- Branch 만들기
- Fast Forward Merge하기
- 3-Way Merge하기
- 3-Way Merge에서 발생할 수 있는 Conflict 해결하기
- Visual Studio로 Conflict 해결하는 법
- Stash로 다양한 문제 해결해보기
- 오래된 저장소에서 Pull하기
- 다른 브랜치로 Commit 옮기기
- .gitignore 파일 설정하기
4. Git을 사용하는 이유
Version Control System
(버전 관리 시스템)
기능 개선 / 버그 수정 / SW 커스터마이징
의미 있는 변화 저장
1. 프로젝트의 변경관리
코드관리
5. Git을 사용하는 이유
Version Control System
(버전 관리 시스템)
기능 개선 / 버그 수정 / SW 커스터마이징
의미 있는 변화 저장
1. 프로젝트의 변경관리
코드관리
2. 프로젝트의 버전관리
되돌아가기
6. Git을 사용하는 이유
Version Control System
(버전 관리 시스템)
기능 개선 / 버그 수정 / SW 커스터마이징
의미 있는 변화 저장
1. 프로젝트의 변경관리
코드관리
2. 프로젝트의 버전관리
되돌아가기
3. 프로젝트의 협업
팀 프로젝트
현주
민정
민정
주혜
민정
예림
예림
주혜
현주
현주
7. 버전관리 tool
Git을 사용하는 Project를 가시적으로
보기 위한 소스 공유 Service
https://github.com/https://git-scm.com/
8. 1. git 커맨드를 이용해서 여러 사람이 협업하기
2. github를 이용해서 여러 사람이 협업하기
: 사실상 1번을 web에서 하는 것이지만 조금 더 직관적
9. 1. git 커맨드를 이용해서 여러 사람이 협업하기
2. github를 이용해서 여러 사람이 협업하기
: 사실상 1번을 web에서 하는 것이지만 조금 더 직관적
그러나 협업을 하다가 conflict(충돌)이 날 경우 간단한 코드만 해결 가능
> conflict code 줄 수가 많은 경우 결국은 1을 사용해야 함
10. 브랜치란?
SW 개발할 때 개발자들은
같은 소스코드를 함께 공유하고 코딩한다!
같은 소스코드에서 출발해서
- A는 버그를 수정
- B는 새로운 기능 추가
여러 개발자들이 동시에 다양한 작업을 할 수 있다!
11. 브랜치란?
Branch : release
다른 사람의 작업에 영향을 주거나 받지 않는다.
여러 사람이 B커밋의 소스코드를 기반으로
서로 다른 작업을 한다
먼저 메인 브랜치(master)에서
자신의 작업 전용 브랜치 (release, func1, bugFix)를 만든다.
Branch : func1
Branch : bugFix
Branch : master
13. 브랜치로 협업하기
1. 각자 자신의 브랜치에서 작업 진행 (release, func1, bugFix)
2. 메인 브랜치(master)에 자신의 브랜치 변경 사항을 적용!
브랜치를 사용하는 이유
다른 브랜치와 병합(Merge)함으로써,
작업한 내용을 새로운 하나의 브랜치로 모을 수 있다Branch : release
Branch : func1
Branch : bugFix
Branch : master
14. 브랜치로 협업하기
A B W Y Z
C
O
X
T
G
F
Branch : release
Branch : func1
Branch : bugFix
Branch : master
릴리즈 버전 이력
기능 추가 이력
버그 수정 이력
15. 브랜치로 협업하기
다른 사람의 작업에 영향을 받지 않고
독립적으로 특정 작업을 수행하여
그 결과를 하나로 모을 수 있다.
19. github로 브랜치 협업하기
현재 master 브랜치에 있음 (default)
$ git branch [브랜치명]
notice라는 이름의 branch 생성
$ git branch
현재 내 local branch 리스트 확인
$ git checkout [브랜치명]
notice 브랜치로 이동! : 난 지금부터 notice 브랜치에서 작업할래
20. github로 브랜치 협업하기
새 파일 생성! : notice 1007
현재 브랜치: notice
기존 파일 수정! : Notice-Text
21. github로 브랜치 협업하기
새 파일 생성! : notice 1007
현재 브랜치: notice
기존 파일 수정! : Notice-Text ( 한 줄 추가함 )
22. github로 브랜치 협업하기
현재 변경사항 확인
$ git status
현재 변경이 있는 파일들 모두 commit 대기로 추가
$ git add .
“notice 추가 및 수정” 이란 이름의 version으로 저장
$ git commit
23. github로 브랜치 협업하기
원격 저장소 (github repository)에 저장
$ git push
처음 만들어진 브랜치가 github에 push될 때는 다
음과 같이 gitbash의 말에 따라
$ git push --set-upstream origin notice
origin (push하려는 dsc-git repository의 별명)
notcie (push 하려는 branch 이름)
24. github로 브랜치 협업하기
현재 기본 브랜치인 master와
Notice 브랜치와 병합 (merge) 할
요청을 만들지 물어본다!
pull request
25. github로 브랜치 협업하기
pull request 생성
Notice 브랜치의 내용을
master 브랜치와 합치고
그 내용을 master에 넣을래
라는 요청을 만들겠어!
able to merge!
28. github로 브랜치 협업하기 근데 다른 팀원도 동시에 뭔가를 했다면?!
$ git branch [브랜치명]
check라는 이름의 branch 생성
$ git checkout [브랜치명]
check 브랜치로 이동! : 난 지금부터 check 브랜치에서 작업할래
29. github로 브랜치 협업하기
새 파일 생성! : DSC-ewha-core 기존 파일 수정! : Notice-Text
현재 브랜치: check
근데 다른 팀원도 동시에 뭔가를 했다면?!
30. github로 브랜치 협업하기 근데 다른 팀원도 동시에 뭔가를 했다면?!
현재 변경사항 확인
$ git status
현재 변경이 있는 파일들 모두 commit 대기로 추가
$ git add .
“check core 파일 추가notice 수정” 이란
이름의 version으로 저장
$ git commit
31. github로 브랜치 협업하기 근데 다른 팀원도 동시에 뭔가를 했다면?!
원격 저장소 (github repository)에 저장
$ git push
처음 만들어진 브랜치가 github에 push될 때는 다
음과 같이 gitbash의 말에 따라
$ git push --set-upstream origin notice
origin (push하려는 dsc-git repository의 별명)
check (push 하려는 branch 이름)
32. github로 브랜치 협업하기
현재 기본 브랜치인 master와
check 브랜치와 병합 (merge) 할
요청을 만들지 물어본다!
pull request
근데 다른 팀원도 동시에 뭔가를 했다면?!
33. github로 브랜치 협업하기
pull request 생성
chek 브랜치의 내용을
master 브랜치와 합치고
그 내용을 master에 넣을래
라는 요청을 만들겠어!
Can’t automatically merge!
근데 다른 팀원도 동시에 뭔가를 했다면?!
34. github로 브랜치 협업하기
자동 merge가 안된다!!
Resolve conflicts!!
충돌이 난 부분을 하나하나 봐야한다!
근데 다른 팀원도 동시에 뭔가를 했다면?!
35. github로 브랜치 협업하기 근데 다른 팀원도 동시에 뭔가를 했다면?!
같은 줄에 다른 내용이 들어가있군!!
어떤 걸로 할꺼야? 선택해서 수정해!
36. github로 브랜치 협업하기 근데 다른 팀원도 동시에 뭔가를 했다면?!
<<<<
====
>>>>
없애고 해결하기!
43. 브랜치 그래프
저번에 말한 Sourcetree 라는
GUI 툴을 이용하면
local 브랜치 내용도
그래프로 볼 수 있음!!
사실 세미나 자료 만들다가 되돌린 게 있어서
그래프가 지금 세미나 흐름과 안맞아요
44. 브랜치 그래프
A B W Y
C
G
Branch : notcie
Branch : check
Branch : master
notice 추가 및 수정
Notice 1007.txt 파일 추가
Notice-text.txt 파일 수정
notice 추가 및 수정
DSC-ewha-core.txt 파일 추가
Notice-text.txt 파일 수정
Merge pull request #1
from mjung1798/notice
Merge pull request #2
from mjung1798/check