스터디 관리를 위한
Github, Sourcetree 사용법
자람 30기 정성학
버전 관리 시스템
(Version Control System)
프로그램,문서 및 모든 종류의 컨텐트의 변경이력을 관리하는 시스템
• 과거 및 현재 상태를 모두 저장
• 상태 변화에 따른 모든 중간 단계를 저장
• 저장소: 소스(코드,문서,그림 등)를 저장
구조에 따른 구분
• 중앙집중식:CVS, subversion
• 분산식: mercurial, git
버전 관리 시스템을 이용하게 되는 원인들
• 무언가 잘못되었을 때 복구를 돕기 위하여
• 프로젝트 진행 중 과거의 어떤 시점으로 돌아갈 수 있게 하기 위하여
• 여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가 동
기화하는 과정을 자동화하기 위하여
• 소스 코드의 변경 사항을 추적하기 위하여
• 소스 코드에서 누가 수정했는지 추적하기 위하여
• 대규모 수정 작업을 더욱 안전하게 진행하기 위하여
• 가지내기(Branch)로 프로젝트에 영향을 최소화 하면서 새로운 부분을 개발하기
위하여
• 접붙이기(Merge)로 검증이 끝난 후 새로이 개발된 부분을 본류(trunk)에 합치기
위하여
• 많은 오픈 소스 프로젝트에서 어떠한 형태로든 버전 관리를 사용하고 있으므로
• 코드의 특정 부분이 왜 그렇게 쓰여 졌는지 의미를 추적하기 위하여
버전 관리 시스템 용어
저장소(repository)
• 소스(코드,문서,그림 등)를 저장하는 공간
브렌치(branching/branch)
• 코드를 중간에 분기하는 행위 / 분기한결과
리비전(revision)
• 특정시간 / 특정 브렌치의 어떠한 상태
• 상태에 해당하는 인덱스를 리비전 번호(revision number) 라고 한다.
버전 관리 시스템 용어
커밋(commit)
• 저장소에 변경된 컨텐트를 반영하는 행위
커밋 로그(commit log)
• 커밋을 할 때 해당 커밋이 어떠한 변경을 했는지 작성한 기록
체크아웃(checkout)
• 현재 저장소를 특정한 리비전으로 업데이트
태그(tag)
• 특정 리비전을 나중에 찾거나 알아보기 쉽게 붙인 텍스트
중앙 집중식 버전 관리 시스템
• 중심이 되는 저장소가 존재
• 저장소 의존도가 크므로 branching을 쉽게 하지 않는다
• 중요한 기능 단위 / 개발단위로만 branching
• 의존성 문제로 한번 만든 브렌치는 쉽게 없애지 않는다
분산 버전 관리 시스템
(Distributed Version Control System)?
• 중앙 서버가 잘못되면 모든 것이 잘못된다는 단점을 해결하기 위해
개발
• DVCS에서는 저장소(repository)를 통째로 복제한다. 따라서 서버에
문제가 생겨도 어떤 사용자이던지 복제된 저장소를 다시 서버로
복사하면 서버가 복구된다.
• 체크아웃(checkout)을 할 때마다 전체 백업이 일어나는 셈이다.
• 대부분의 DVCS에서는 다수의 원격 저장소(remote repository)를
갖는 것이 가능하기 때문에 동시에 여러 그룹과 여러 방법으로 함께
작업할 수 있다.
분산 버전 관리 시스템
(Distributed Version Control System)?
특징
• 중심이 되는 저장소가 존재하지 않음
• Branching / merging이 매우 자유로움
• 새로운 코드를 만들거나 수정할 때 branching을 하는 것이 일반
적
대표적인 오픈소스 VCS
• Mercurial, git
Git?
• 요즘 가장 널리 쓰이는 버전관리 시스템이다.
• Git Tutorial: https://rogerdudler.github.io/git-
guide/index.ko.html
• Download: https://git-scm.com/
Git의 목표
• 빠른 속도
• 단순한 구조
• 비 선형적인 개발(수천개의 동시 다발적인 브랜치)
• 완벽한 분산
• 대형 프로젝트에서의 사용 편의
Git Basic Workflow
1. 로컬 Repository와 Workspace에
remote repository를 pull한다.
2. Workspace에서 코딩을 열십히 한다
3. 바뀐 점을 스테이징(Staging)한다
4. 바뀐 점을 로컬 repositor에 커밋
(Save)한다
5. Local Repository의 내용을 Remote
Repository에 업로드한다.
GitHub?
• 깃 서버를 대신해주는 사이트
• https://github.com/
• Create Remote Repository
• Issue
• Wiki
• Merge
Create GitHub Remote Repository
Issues
Issues
Wiki
Issues, Wiki
• Issues
• wiki
Collaboration
Sourcetree?
• Git repository에 대한 그래픽 인터페이스를 제공하는 Windows
및 Mac용 무료 Git Client입니다
Sourcetree 사용법
• Clone
• Commit
• Push
• Pull
• Branch
• Git Flow
• Ignore
Basic
Clone
Commit
Commit
Push
Push
Pull
Git Flow
일반적으로 개발자의 로컬에서만 유지하고 origin 에 푸시하지 않는다
• Feature : 특정한 기능을 위한 브랜치
• Release : 릴리즈 점검을 위한 브랜치
• Hotfix : 긴급 버그 픽스를 위한 브랜치
역할이 끝나면 브랜치를 머지, 삭제한다.
Git Flow
Git Flow
Merge
Merge
Merge
Ignore
감사합니다
참고자료 : selab web application development slide
http://selab.hanyang.ac.kr/courses/cse326/2017/labs/lab0-Git_MAMP.html

30기 정성학 "Git, sourcetree 사용법"

  • 1.
    스터디 관리를 위한 Github,Sourcetree 사용법 자람 30기 정성학
  • 2.
    버전 관리 시스템 (VersionControl System) 프로그램,문서 및 모든 종류의 컨텐트의 변경이력을 관리하는 시스템 • 과거 및 현재 상태를 모두 저장 • 상태 변화에 따른 모든 중간 단계를 저장 • 저장소: 소스(코드,문서,그림 등)를 저장 구조에 따른 구분 • 중앙집중식:CVS, subversion • 분산식: mercurial, git
  • 3.
    버전 관리 시스템을이용하게 되는 원인들 • 무언가 잘못되었을 때 복구를 돕기 위하여 • 프로젝트 진행 중 과거의 어떤 시점으로 돌아갈 수 있게 하기 위하여 • 여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가 동 기화하는 과정을 자동화하기 위하여 • 소스 코드의 변경 사항을 추적하기 위하여 • 소스 코드에서 누가 수정했는지 추적하기 위하여 • 대규모 수정 작업을 더욱 안전하게 진행하기 위하여 • 가지내기(Branch)로 프로젝트에 영향을 최소화 하면서 새로운 부분을 개발하기 위하여 • 접붙이기(Merge)로 검증이 끝난 후 새로이 개발된 부분을 본류(trunk)에 합치기 위하여 • 많은 오픈 소스 프로젝트에서 어떠한 형태로든 버전 관리를 사용하고 있으므로 • 코드의 특정 부분이 왜 그렇게 쓰여 졌는지 의미를 추적하기 위하여
  • 4.
    버전 관리 시스템용어 저장소(repository) • 소스(코드,문서,그림 등)를 저장하는 공간 브렌치(branching/branch) • 코드를 중간에 분기하는 행위 / 분기한결과 리비전(revision) • 특정시간 / 특정 브렌치의 어떠한 상태 • 상태에 해당하는 인덱스를 리비전 번호(revision number) 라고 한다.
  • 5.
    버전 관리 시스템용어 커밋(commit) • 저장소에 변경된 컨텐트를 반영하는 행위 커밋 로그(commit log) • 커밋을 할 때 해당 커밋이 어떠한 변경을 했는지 작성한 기록 체크아웃(checkout) • 현재 저장소를 특정한 리비전으로 업데이트 태그(tag) • 특정 리비전을 나중에 찾거나 알아보기 쉽게 붙인 텍스트
  • 6.
    중앙 집중식 버전관리 시스템 • 중심이 되는 저장소가 존재 • 저장소 의존도가 크므로 branching을 쉽게 하지 않는다 • 중요한 기능 단위 / 개발단위로만 branching • 의존성 문제로 한번 만든 브렌치는 쉽게 없애지 않는다
  • 7.
    분산 버전 관리시스템 (Distributed Version Control System)? • 중앙 서버가 잘못되면 모든 것이 잘못된다는 단점을 해결하기 위해 개발 • DVCS에서는 저장소(repository)를 통째로 복제한다. 따라서 서버에 문제가 생겨도 어떤 사용자이던지 복제된 저장소를 다시 서버로 복사하면 서버가 복구된다. • 체크아웃(checkout)을 할 때마다 전체 백업이 일어나는 셈이다. • 대부분의 DVCS에서는 다수의 원격 저장소(remote repository)를 갖는 것이 가능하기 때문에 동시에 여러 그룹과 여러 방법으로 함께 작업할 수 있다.
  • 8.
    분산 버전 관리시스템 (Distributed Version Control System)? 특징 • 중심이 되는 저장소가 존재하지 않음 • Branching / merging이 매우 자유로움 • 새로운 코드를 만들거나 수정할 때 branching을 하는 것이 일반 적 대표적인 오픈소스 VCS • Mercurial, git
  • 9.
    Git? • 요즘 가장널리 쓰이는 버전관리 시스템이다. • Git Tutorial: https://rogerdudler.github.io/git- guide/index.ko.html • Download: https://git-scm.com/
  • 10.
    Git의 목표 • 빠른속도 • 단순한 구조 • 비 선형적인 개발(수천개의 동시 다발적인 브랜치) • 완벽한 분산 • 대형 프로젝트에서의 사용 편의
  • 11.
    Git Basic Workflow 1.로컬 Repository와 Workspace에 remote repository를 pull한다. 2. Workspace에서 코딩을 열십히 한다 3. 바뀐 점을 스테이징(Staging)한다 4. 바뀐 점을 로컬 repositor에 커밋 (Save)한다 5. Local Repository의 내용을 Remote Repository에 업로드한다.
  • 12.
    GitHub? • 깃 서버를대신해주는 사이트 • https://github.com/ • Create Remote Repository • Issue • Wiki • Merge
  • 13.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
    Sourcetree? • Git repository에대한 그래픽 인터페이스를 제공하는 Windows 및 Mac용 무료 Git Client입니다
  • 21.
    Sourcetree 사용법 • Clone •Commit • Push • Pull • Branch • Git Flow • Ignore
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
    Git Flow 일반적으로 개발자의로컬에서만 유지하고 origin 에 푸시하지 않는다 • Feature : 특정한 기능을 위한 브랜치 • Release : 릴리즈 점검을 위한 브랜치 • Hotfix : 긴급 버그 픽스를 위한 브랜치 역할이 끝나면 브랜치를 머지, 삭제한다.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
    감사합니다 참고자료 : selabweb application development slide http://selab.hanyang.ac.kr/courses/cse326/2017/labs/lab0-Git_MAMP.html