SlideShare a Scribd company logo
내 맘대로 이해한
오픈소스 소프트웨어
국립창원대학교 정보통신공학과
정보시각화연구실 허서영
왜 OSS에 관심을 가지나
?
시간이 단축된다.
비용이 절감된다.
버그 수정 또는 기능 추가가 된다.
커스터마이징이 가능하다.
특정 벤더에 종속되지 않는다.
내가 만든 것보다 정확하다.
OSS 특징
자유 : 사용, 복제, 수정, 배포
공개 : 소스 코드 공개
비차별 : 이용자, 이용분야에 차별 금지
자유로운 개발에 따른 체계적이지 못한 문서
제품 보증 및 유지 보수의 어려움
라이센스 미준수에 따른 저작권법 위반 및 특허 소송의 위험
성
OSS의 정의
자유로운 재배포
소스 코드 공개
파생 저작물
저작자의 소스 코드 원형 유
지
개인 및 단체에 대한 차별 금
지
사용 분야에 대한 차별 금지
사용 허가의 배포 (라이센스)
특정 제품에만 유효한
사용허가의 금지
다른 소프트웨어를 제한하는
사용허가의 금지
사용 허가의 기술 중립성
버전 관리의 필요성?
서영
명한
서영 명한
소스 코드에서 무엇이 수정 되었는지?
누가 소스 코드를 수정 하였는지?
언제 소스 코드가 수정 되었는지?
왜 소스 코드를 수정 하였는지?
예전 상태로 돌릴 수 있는지?
그래서 버전관리 시스템을 사용합니다.
Git과 Github
Git이란 소스코드를 효과적으로 관리하기 위해
개발된 '분산형 버전 관리 시스템’
Github는 분산 버전 관리 툴인 깃을 사용하는
프로젝트를 지원하는 웹호스팅 서비스
Github 외에도…
Repository
“저장소” 말그대로 파일이나 폴더를 저장해 두
는곳
장점은 파일이 변경 이력 별로 구분되어 저장
된다.
로컬과 원격으로 나뉜다
원격 : 파일이 원격 저장소 전용 서버에서 관리
되며 여러 사람이 함께 공유하기 위한 저장소
로컬 : 내 PC에 파일이 저장되는 개인 전용 저
장소
저장소
로컬 원격
인덱스
작업트리
Commit
Add
저장소
작업트리 : 일반적인 작업 공간
인덱스 : 변경 사항들을 모아두는
공간
저장소 : 커밋들 모아둔 공간
Git 기본 명령어
git init : 깃 초기화
git status : 인덱스의 상태 표시
git show : 원하는 커밋 보기
git log, git shortlog : 커밋 정보 출력
git diff : 커밋간 코드 차이 출력
git add <파일명> : 인덱스에 원하는 파일 추가
Commit
파일 및 폴더의 추가/변경 사항을 저장소에 기록하기 위한 명령어
사용법 : git commit -m <커밋 메세지>
영문/숫자로 이루어진 40자리 고유 이름 생성
커밋을 하면 변경 이력이 기록된 커밋이 생성
커밋 추천 양식
1번째 줄 : 커밋 내의 변경 내용을 요약
2번째 줄 : 빈 칸
3번째 줄 : 변경한 이유
Git 명령어 원격
git clone <url> <name> : 원격 저장소 깃을 복
제
git push origin master : 로컬 커밋 내용들을 원
격으로 전송
git pull : 원격 커밋 내용들을 로컬로 받음 (코드
변화)
git fetch : 원격 커밋 내용들을 로컬로 받음 (코
드 변화 없음)
Git 실습 1 : 계정 연결
계정 설정
git config --global user.name “Seoyeong”
git config --global user.email gjtjdud93@gmail.com
저장소 복제
git clone https://github.com/Heo-
Seoyeong/OSS_Seminar.git OSS_Clone
Git 실습 2 : 깃 초기화 및
커밋
폴더 생성 및 깃 초기화
mkdir git-ex
cd git-ex
git init
테스트 파일 생성 및 커밋
touch test.txt
git add test.txt
git commit -m “first git commit”
Git 실습 3 : 텍스트 수정
커밋
파일 수정 후 커밋
vi test.txt
i 입력 ‘Hello World’ 입력 후 :wq
테스트 파일 추가 및 커밋
git add test.txt
git commit -m “second git commit”
Git 실습 4 : 원격 저장소
원격 저장소 확인 및 연결
git remote add origin
https://github.com/Heo-Seoyeong/OSS_Seminar.git
git remote -v
테스트 파일 푸시
git pull origin master
git push origin master
fatal: refusing to merge unrelated histories
git pull origin master --allow-unrelated-histories
심화 : Git 협업 및 관리
branch
Git flow, GitHub flow, GitLab flow
url : https://ujuc.github.io/2015/12/16/git-flow-github-flow-gitlab-flow/
Merge/ Rebase
Merge : 작업한 브랜치를 원하는 브랜치에 합
치는 것
Rebase : 상위 브랜치의 내용이 업데이트 되었
을 때 작업중인 브랜치를 맞게 업데이트하는
것
충돌시에는??? ->
stash
브랜치를 변경할 때 인덱스에 있는 파일을 임시 저장
명령어
git stash save : 현재 작업을 저장해두고 branch를 head로 돌린다.(git reset –hard)
git stash list : 저장되어 있는 stash들 보기
git stash pop : 가장 최근에 save한 stash가 현재 branch에 적용된다.
git stash apply : git stash pop 과 비슷한 명령어지만 stash list에서 삭제하지 않는
다
git stash drop : 필요 없는 stash를 삭제
git stash clear : 전체 stash list를 삭제
Github 사용하기
Issues : 수정이나 버그에 대한 건의사항을 작
성
Pull request : 수정한 코드에 대해 다른 사람들
의 조언을 구할 때 사용
Wiki : 프로젝트에 대한 문서 작성
“Thanks”
–Heo Seoyeong–

More Related Content

Similar to 내 맘대로 이해한 오픈소스 소프트웨어

Open Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewOpen Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code review
Minsuk Lee
 
리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기
Wooyoung Ko
 
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
Ji-Woong Choi
 
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
Wooyoung Ko
 
Git & Github Seminar-1
Git & Github Seminar-1Git & Github Seminar-1
Git & Github Seminar-1
sangyun han
 
Git lecture1
Git lecture1Git lecture1
Git lecture1
ssuseraf62e91
 
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
Ian Choi
 
Why use git
Why use gitWhy use git
Why use git
Taeung Song
 
제로부터시작하는Git
제로부터시작하는Git제로부터시작하는Git
제로부터시작하는Git
Mario Cho
 
오픈소스 컨트리뷰톤 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
 
Open source engineering
Open source engineeringOpen source engineering
Open source engineering
YoungSu Son
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
YoungSu Son
 
Yobi-hands-on-lab-at-d2fest
Yobi-hands-on-lab-at-d2festYobi-hands-on-lab-at-d2fest
Yobi-hands-on-lab-at-d2fest
insanehong Kim
 
[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
 
오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)
오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)
오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)Channy Yun
 
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
Daniel Juyung Seo
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발Jinuk Kim
 
11. git basic
11. git basic11. git basic
11. git basic
Geunhyung Kim
 
regular.express 발표자료
regular.express 발표자료regular.express 발표자료
regular.express 발표자료
bdh92123
 

Similar to 내 맘대로 이해한 오픈소스 소프트웨어 (20)

Open Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewOpen Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code review
 
리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기
 
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
 
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
 
Git & Github Seminar-1
Git & Github Seminar-1Git & Github Seminar-1
Git & Github Seminar-1
 
Git lecture1
Git lecture1Git lecture1
Git lecture1
 
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
 
Why use git
Why use gitWhy use git
Why use git
 
제로부터시작하는Git
제로부터시작하는Git제로부터시작하는Git
제로부터시작하는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)
 
Open source engineering
Open source engineeringOpen source engineering
Open source engineering
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
Yobi-hands-on-lab-at-d2fest
Yobi-hands-on-lab-at-d2festYobi-hands-on-lab-at-d2fest
Yobi-hands-on-lab-at-d2fest
 
[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
 
오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)
오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)
오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)
 
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 
11. git basic
11. git basic11. git basic
11. git basic
 
regular.express 발표자료
regular.express 발표자료regular.express 발표자료
regular.express 발표자료
 

내 맘대로 이해한 오픈소스 소프트웨어

  • 1. 내 맘대로 이해한 오픈소스 소프트웨어 국립창원대학교 정보통신공학과 정보시각화연구실 허서영
  • 2. 왜 OSS에 관심을 가지나 ? 시간이 단축된다. 비용이 절감된다. 버그 수정 또는 기능 추가가 된다. 커스터마이징이 가능하다. 특정 벤더에 종속되지 않는다. 내가 만든 것보다 정확하다.
  • 3. OSS 특징 자유 : 사용, 복제, 수정, 배포 공개 : 소스 코드 공개 비차별 : 이용자, 이용분야에 차별 금지 자유로운 개발에 따른 체계적이지 못한 문서 제품 보증 및 유지 보수의 어려움 라이센스 미준수에 따른 저작권법 위반 및 특허 소송의 위험 성
  • 4. OSS의 정의 자유로운 재배포 소스 코드 공개 파생 저작물 저작자의 소스 코드 원형 유 지 개인 및 단체에 대한 차별 금 지 사용 분야에 대한 차별 금지 사용 허가의 배포 (라이센스) 특정 제품에만 유효한 사용허가의 금지 다른 소프트웨어를 제한하는 사용허가의 금지 사용 허가의 기술 중립성
  • 6. 소스 코드에서 무엇이 수정 되었는지? 누가 소스 코드를 수정 하였는지? 언제 소스 코드가 수정 되었는지? 왜 소스 코드를 수정 하였는지? 예전 상태로 돌릴 수 있는지? 그래서 버전관리 시스템을 사용합니다.
  • 7. Git과 Github Git이란 소스코드를 효과적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템’ Github는 분산 버전 관리 툴인 깃을 사용하는 프로젝트를 지원하는 웹호스팅 서비스
  • 9. Repository “저장소” 말그대로 파일이나 폴더를 저장해 두 는곳 장점은 파일이 변경 이력 별로 구분되어 저장 된다. 로컬과 원격으로 나뉜다 원격 : 파일이 원격 저장소 전용 서버에서 관리 되며 여러 사람이 함께 공유하기 위한 저장소 로컬 : 내 PC에 파일이 저장되는 개인 전용 저 장소
  • 10. 저장소 로컬 원격 인덱스 작업트리 Commit Add 저장소 작업트리 : 일반적인 작업 공간 인덱스 : 변경 사항들을 모아두는 공간 저장소 : 커밋들 모아둔 공간
  • 11. Git 기본 명령어 git init : 깃 초기화 git status : 인덱스의 상태 표시 git show : 원하는 커밋 보기 git log, git shortlog : 커밋 정보 출력 git diff : 커밋간 코드 차이 출력 git add <파일명> : 인덱스에 원하는 파일 추가
  • 12. Commit 파일 및 폴더의 추가/변경 사항을 저장소에 기록하기 위한 명령어 사용법 : git commit -m <커밋 메세지> 영문/숫자로 이루어진 40자리 고유 이름 생성 커밋을 하면 변경 이력이 기록된 커밋이 생성 커밋 추천 양식 1번째 줄 : 커밋 내의 변경 내용을 요약 2번째 줄 : 빈 칸 3번째 줄 : 변경한 이유
  • 13. Git 명령어 원격 git clone <url> <name> : 원격 저장소 깃을 복 제 git push origin master : 로컬 커밋 내용들을 원 격으로 전송 git pull : 원격 커밋 내용들을 로컬로 받음 (코드 변화) git fetch : 원격 커밋 내용들을 로컬로 받음 (코 드 변화 없음)
  • 14. Git 실습 1 : 계정 연결 계정 설정 git config --global user.name “Seoyeong” git config --global user.email gjtjdud93@gmail.com 저장소 복제 git clone https://github.com/Heo- Seoyeong/OSS_Seminar.git OSS_Clone
  • 15. Git 실습 2 : 깃 초기화 및 커밋 폴더 생성 및 깃 초기화 mkdir git-ex cd git-ex git init 테스트 파일 생성 및 커밋 touch test.txt git add test.txt git commit -m “first git commit”
  • 16. Git 실습 3 : 텍스트 수정 커밋 파일 수정 후 커밋 vi test.txt i 입력 ‘Hello World’ 입력 후 :wq 테스트 파일 추가 및 커밋 git add test.txt git commit -m “second git commit”
  • 17. Git 실습 4 : 원격 저장소 원격 저장소 확인 및 연결 git remote add origin https://github.com/Heo-Seoyeong/OSS_Seminar.git git remote -v 테스트 파일 푸시 git pull origin master git push origin master
  • 18. fatal: refusing to merge unrelated histories git pull origin master --allow-unrelated-histories
  • 19. 심화 : Git 협업 및 관리
  • 20. branch Git flow, GitHub flow, GitLab flow url : https://ujuc.github.io/2015/12/16/git-flow-github-flow-gitlab-flow/
  • 21. Merge/ Rebase Merge : 작업한 브랜치를 원하는 브랜치에 합 치는 것 Rebase : 상위 브랜치의 내용이 업데이트 되었 을 때 작업중인 브랜치를 맞게 업데이트하는 것 충돌시에는??? ->
  • 22. stash 브랜치를 변경할 때 인덱스에 있는 파일을 임시 저장 명령어 git stash save : 현재 작업을 저장해두고 branch를 head로 돌린다.(git reset –hard) git stash list : 저장되어 있는 stash들 보기 git stash pop : 가장 최근에 save한 stash가 현재 branch에 적용된다. git stash apply : git stash pop 과 비슷한 명령어지만 stash list에서 삭제하지 않는 다 git stash drop : 필요 없는 stash를 삭제 git stash clear : 전체 stash list를 삭제
  • 23. Github 사용하기 Issues : 수정이나 버그에 대한 건의사항을 작 성 Pull request : 수정한 코드에 대해 다른 사람들 의 조언을 구할 때 사용 Wiki : 프로젝트에 대한 문서 작성