- 과목명: 오픈소스소프트웨어 (SAI0003-2)
- 담당교수: 최광훈 (전남대학교 인공지능학부)
- 수업목표:
- 오픈소스SW의 개념과 도구 학습
- Git/GitHub을 통한 협업 능력 향상
- 자기주도적 학습 태도 함양
- 운영방식: 플립러닝 기반 실습 중심
- 평가비율: 중간 30%, 기말 40%, 과제 20%, 참여도 10%
- 특징: 강의 영상 사전 학습 → 퀴즈 → 요약 강의 → 실습
- 오픈소스 정의:
소스코드를 공개해 누구나 자유롭게 사용·수정·배포할 수 있는 소프트웨어
- 주요 라이선스: MIT, GPL, Apache 2.0
- 대표 프로젝트: Linux Kernel, VS Code
- 가치: 협업, 공유, 혁신
- 목적: 파일의 변경 이력 관리, 협업 효율화
- 유형:
- 중앙집중형(VCS): SVN, CVS
- 분산형(DVCS): Git, Mercurial
- Git 장점: 오프라인 작업 가능, 손쉬운 브랜치 관리, 병합 및 복구 용이
git init
git add .
git commit -m "first commit"
git push origin main
# 원격 저장소 추가
git remote add origin https://github.com/username/repo.git
# 다른 저장소에서 변경사항 가져오기
git fetch pb
# 차이 비교
git diff pb/main
# 원격 저장소 최신 버전으로 병합
git rebase pb/main-
GitHub란?
Git 기반의 소셜 코딩(Social Coding) 플랫폼으로,
개발자가 코드를 공유하고 협업하는 환경을 제공합니다. -
핵심 개념
- Repository(저장소): 코드와 버전이 관리되는 공간
- Fork: 다른 사람의 저장소를 내 계정으로 복제
- Pull Request (PR): 수정 내용을 원본 저장소로 병합 요청
- Issue: 버그, 제안, 질문 등을 기록하는 협업 기능
- 기본 협업 흐름
- 저장소를 Fork한다.
- 로컬로 Clone하여 수정한다.
- 변경사항을 Commit & Push한다.
- Pull Request(PR) 를 생성해 원본 저장소에 병합 요청한다.
# 예시 명령어
git remote add pb https://github.com/kwanghoon/oss_git_example
git fetch pb
git diff pb/master
git rebase pb/master- 브랜치는 독립적인 개발 공간으로, 여러 기능을 동시에 개발할 때 사용한다.
- 보통 다음과 같은 구조로 관리한다:
main: 배포용 안정 버전develop: 개발 중인 통합 버전feature: 새로운 기능 개발용 브랜치
# 브랜치 생성과 전환
git branch feature/login
git checkout feature/login-
정의:
텍스트로 문서를 구조화하는 경량 마크업 언어
(2004년 John Gruber, Aaron Swartz 개발) -
기본 문법 예시:
| 문법 | 기능 | 예시 |
|---|---|---|
# |
제목 | # 제목 |
*text* |
기울임 | text |
**text** |
굵게 | text |
[링크](url) |
링크 | GitHub |
> 인용문 |
인용문 | > 예시 |
`코드` |
코드 | git add |