Download presentation
Presentation is loading. Please wait.
1
이종효 이슬기 강민수 송강산 이해인 은혁진
2
INDEX INTRO git이란? git의 특징 git사용예제 git과 유사한 Tool
3
? INTRO 2 git이란 3 git의 특징 4 git사용예제 5 유사한 Tool 프로젝트 규모가 작아서
소스를 공개하기 싫어서 따로 관리하는 관리방식이 있어서 사용방법을 잘 몰라서
4
(Distributed VCS – DVCS)
1 INTRO 분산 버전 관리 시스템 (Distributed VCS – DVCS) git이란 3 git의 특징 4 git사용예제 5 유사한 Tool 여러 버전으로 분리 가능 강력한 History 관리 중앙집중적 소스관리 Git에대해 알아보기 전에 먼저 VCS를 소개하겠습니다. VCS는 분산 버전 관리 시스템의 약자입니다. VCS에서는 클라이언트가 파일의 마지막 스냅샷을 가져오는 것이 아니라 저장소 자체를 복제하게 된다. 서버에 문제가 생길경우 이 복제물로 작업이 가능하며 서버를 복원할 수도 있다. 또한 원격저장소가 존재하여 동시에 여러 그룹과 협업이 가능합니다. VCS의 장점은 여러버전으로 분리가 가능하여 이전에 우리가 해왔던 일일이 소스를 복사해 보관하고 비교해가며 힘들게 병합(merge) 했던 일들이 손쉽게 해결됬습니다. history 관리 기능이 강력하여 변경된 소스를 모두 추적할 수 있고, 잘못 수정한 내용이 있다 하더라도 손쉽게 이전으로 돌릴 수 있습니다. 또, 중앙 집중적 소스관리를 통해 소스코드를 안전하게 보관할 수 있습니다. git은 VCS의 대표적인 시스템으로 이러한 기능을 제공합니다. 이제 본격적으로 git에 대해 알아봅시다.
5
git이란 1 INTRO 3 git의 특징 4 git사용예제 5 유사한 Tool 작업한 내용을 스테이지에 올려서
뭔가 좀 복잡해 보이지만, 이 트랜잭션내용을 간단하게 요약하면 "작업한 내용을 스테이지에 올려서 로컬 저장소에 커밋하고, 이를 푸시해서 원격 저장소로 보낸다.“고 할 수 있습니다. 이 문장에서 생소해보이는 단어들이 있을 수 도 있습니다. 이러한 용어들을 소개해 드리고 그림에 대해 다시 이야기해보겠습니다. 작업한 내용을 스테이지에 올려서 로컬 저장소에 커밋하고, 이를 푸시해서 원격 저장소로 보낸다
6
git이란 1 INTRO 3 git의 특징 4 git사용예제 5 유사한 Tool 저장소 (Repository)
먼저 저장소라는 용어 입니다. 소스코드가 저장되어 있는 여러 개의 브랜치(Branch)들이 모여 있는 물리적 공간을 의미합니다. GIT의 저장소는 로컬 저장소(Local Repository)와 원격 저장소(Remote Repository)로 나뉩니다. 저장소 (Repository) 프로젝트가 거주(live)할 수 있는 디렉토리나 저장 공간
7
git이란 1 INTRO 3 git의 특징 4 git사용예제 5 유사한 Tool 스테이지 (Stage) 커밋 (Commit)
작업한 내용을 로컬 저장소에 저장하는 과정입니다. 각각의 커밋은 의미 있는 변경 단위이고, 변경에 대한 설명을 커밋 로그로 남깁니다. 여러명이 작업하는 이 커밋로그는 매우 중요하며, 형식이 정해져 있는 경우도 있습니다. 대개 하나의 커밋은 '회원 가입 기능 추가', '검색 버그 수정'과 같이 하나의 주제로 묶을 수 있는 변경 단위가 됩니다. 그림에서는 디렉토리에서 스테이지로 저장하는것을 git add라 하고 스테이지에서 반영할 파일을 선별하여 저장소에 저장하는것을 커밋이라고 합니다 스테이지 (Stage) 커밋 (Commit) 작업한 내용이 올라가는 임시 저장 영역 로컬저장소에 변경사항에 대한 이력 추가
8
git이란 1 INTRO 3 git의 특징 4 git사용예제 5 유사한 Tool 병합 (Merge) 브랜치 (Branch)
커밋을 단위로 구분된 소스코드 타임라인에서 분기해서 새로운 커밋을 쌓을 수 있는 가지를 만드는 것을 브랜치라 합니다. 브랜치 중에 개발의 주축이 되는 브랜치를 마스터 브랜치(Master Branch)라 하며, 모든 브랜치는 마스터 브랜치에서 분기되어 최종적으로 다시 마스터 브랜치에 병합(Merge)되며 개발이 진행됩니다. 위 그림에서 서로 다른 색상으로 구분된 선들이 각각 하나의 브랜치를 의미합니다. 병합은 브랜치와 반대되는 개념으로, 하나의 브랜치를 다른 브랜치와 합치는 과정을 의미합니다. 두 개의 브랜치를 합쳐서 하나의 브랜치로 만드는 3-Way Merge가 모든 병합 작업의 기본이 됩니다. 병합의 대상이 되는 두 브랜치는 주종관계가 성립하며, 따라서 'A 브랜치와 B 브랜치를 병합한다'라는 말은 모호한 표현이 됩니다. 즉, 'A 브랜치를 B 브랜치에 병합'하는 작업과 'B 브랜치를 A 브랜치에 병합'하는 작업은 서로 다른 작업입니다. 병합 과정에서 두 개의 브랜치에서 파일의 같은 부분을 서로 다르게 수정한 경우 충돌(Collision)이 발생하며, 병합이 일시정지 됩니다. 이 경우, 충돌이 발생한 부분을 직접 수정하거나, Merge Tool 등을 활용하여 충돌을 해결한 뒤 병합을 계속 진행하면 됩니다. 보통 Merge 작업은 각각의 팀원이 수행하기 보다는 Project Manager가 일괄적으로 수행하는 것이 일반적입니다. 브랜치를 항상 마스터 브랜치에서 해야 한다는 제약은 없으며, 브랜치에서 또 브랜치를 할 수도 있습니다. 대개 프로젝트에서 브랜치는 프로그램 전체를 몇 개의 단위로 나눈 토픽 단위로 생성하며, 각 토픽 브랜치에서 개발자별로 새로운 브랜치를 생성하여 작업을 합니다. 작업한 내용은 최종적으로 마스터 브랜치로 병합되어 하나의 토픽이 종료됩니다. 브랜치 (Branch) 커밋으로 구분되는 타임라인에서 분기해서 새로운 커밋을 쌓을 수 있는 가지를 만드는 것 병합 (Merge) 하나의 브랜치를 다른 브랜치와 합치는 과정
9
git이란 1 INTRO 3 git의 특징 4 git사용예제 5 유사한 Tool 초록색 | 마스터브랜치
커밋을 단위로 구분된 소스코드 타임라인에서 분기해서 새로운 커밋을 쌓을 수 있는 가지를 만드는 것을 브랜치라 합니다. 브랜치 중에 개발의 주축이 되는 브랜치를 마스터 브랜치(Master Branch)라 하며, 모든 브랜치는 마스터 브랜치에서 분기되어 최종적으로 다시 마스터 브랜치에 병합(Merge)되며 개발이 진행됩니다. 위 그림에서 서로 다른 색상으로 구분된 선들이 각각 하나의 브랜치를 의미합니다. 병합은 브랜치와 반대되는 개념으로, 하나의 브랜치를 다른 브랜치와 합치는 과정을 의미합니다. 두 개의 브랜치를 합쳐서 하나의 브랜치로 만드는 3-Way Merge가 모든 병합 작업의 기본이 됩니다. 병합의 대상이 되는 두 브랜치는 주종관계가 성립하며, 따라서 'A 브랜치와 B 브랜치를 병합한다'라는 말은 모호한 표현이 됩니다. 즉, 'A 브랜치를 B 브랜치에 병합'하는 작업과 'B 브랜치를 A 브랜치에 병합'하는 작업은 서로 다른 작업입니다. 병합 과정에서 두 개의 브랜치에서 파일의 같은 부분을 서로 다르게 수정한 경우 충돌(Collision)이 발생하며, 병합이 일시정지 됩니다. 이 경우, 충돌이 발생한 부분을 직접 수정하거나, Merge Tool 등을 활용하여 충돌을 해결한 뒤 병합을 계속 진행하면 됩니다. 보통 Merge 작업은 각각의 팀원이 수행하기 보다는 Project Manager가 일괄적으로 수행하는 것이 일반적입니다. 브랜치를 항상 마스터 브랜치에서 해야 한다는 제약은 없으며, 브랜치에서 또 브랜치를 할 수도 있습니다. 대개 프로젝트에서 브랜치는 프로그램 전체를 몇 개의 단위로 나눈 토픽 단위로 생성하며, 각 토픽 브랜치에서 개발자별로 새로운 브랜치를 생성하여 작업을 합니다. 작업한 내용은 최종적으로 마스터 브랜치로 병합되어 하나의 토픽이 종료됩니다. 보라색 | 버그 수정 브랜치 노란색 | 최종테스트 주황색 | 주 개발 브랜치
10
git이란 PUSH PULL 1 INTRO 로컬저장소 원격저장소 3 git의 특징 4 git사용예제 5 유사한 Tool
푸시와 풀은 서로 다른 개념입니다 푸시(Push) 변경사항이 있을 때, 로컬저장소의 커밋을 원격저장소로 보내는 로컬 저장소의원격 저장소에 반영되지 않은 커밋을 원격 저장소로 저장하는 과정입니다. GIT에서의 커밋은 로컬 저장소로 변경 사항을 반영하는 것을 의미하며, 원격 저장소로 변경사항을 보내는 과정은 푸시입니다. 푸시와 반대로 풀은변경사항이 있는 내용을 원격 저장소에서 로컬저장소로 가져와서 저장하는 과정입니다. 푸시 과정에서 충돌(Collision)이 일어나서 푸시가 거절된 경우, 풀을 통해 원격 저장소의 변경 내용을 반영한 뒤 다시 푸시를 시도해야 합니다. 풀 (Pull) 푸시와 반대로 원격 저장소에 있는 내용 중 로컬 저장소에 반영되지 않은 내용을 가져와서 로컬 저장소에 저장하는 과정을 의미합니다. 이를 통해 다른 팀원이 변경하고 푸시한 내용을 로컬 저장소로 가져올 수 있습니다. 푸시 (Push) 풀 (Pull) 로컬저장소의 내용을 원격저장소로 저장하는 과정 원격저장소의 내용을 로컬저장소로 저장하는 과정
11
git이란 1 INTRO 3 git의 특징 4 git사용예제 5 유사한 Tool
이제 다시 그림을 봅시다. 조금은 그림의 이해가 쉬워졌습니다. Working direcory에서 작업된 내용은 임시저장소 스테이지로 add되고 그 중 내용을 골라 로컬저장소에 커밋됩니다. 커밋된 내용은 로컬저장소에서 원격저장소로 푸쉬되고 원격저장소에서 로컬저장소로 풀됩니다. 풀은 보통 fetch와 merge가 합쳐진 작업입니다.
12
git의 특징 1 INTRO 2 git이란? 비선형 4 git사용예제 개발지원 효율적인 분산개발 5 유사한 Tool
대규모 프로젝트 4 git사용예제 5 유사한 Tool 1, 분산 개발 전체 개발 이력을 각 개발자의 로컬로 복사본을 제공하고 변경된 이력을 다시 하나의 저장소로 복사한다. 이러한 변경은 추가개발지점을 가져와 로컬개발 지점과 동일하게 병합(merge)할 수 있다. 저장소는 Git protocol 및 HTTP로 쉽고 효율적(특별한 웹서버 구성없이)으로 접근할 수 있다. 2. 비선형 개발 지원 신속하고 편리항 branch 및 merge 지원, 비선형(여러갈래) 개발 이력을 시각화하고 탐색 할 수 있는 강력한 도구를 제공한다. 3. 대규모 프로젝트의 효율적인 처리 Git은 매우 빠르고, 대형프로젝트나 이력이 많은 작업에 매우 합리적이다. Git은 대부분의 다른 버전관리시스템보다 빠르게 요청한다. 그리고 일부 작업에서는 더 빠르게 진행한다. 또한, 최근의 정상급 오픈소스 버전관리 시스템보다 장기간의 수정내역을 매우 효율적인 압축방법을 사용한다.
13
1 INTRO 2 git이란? (1)로컬저장소에 저장된 파일 3 git의특징 git 사용예제 5 유사한 Tool
14
1 INTRO 2 git이란? (2)작업자B가 작성한 Police.java 3 git의특징 git 사용예제 5 유사한 Tool
15
git 사용예제 1 INTRO 2 git이란? (3)작업자A가 작성한 FIreMan.java 3 git의특징
5 유사한 Tool
16
git 사용예제 1 INTRO (4)작업자A와 작업자B가 따로 작업한 TestMain.java 2 git이란? 3 git의특징
5 유사한 Tool
17
1 INTRO (5)충돌발생 2 git이란? 3 git의특징 git 사용예제 5 유사한 Tool
18
유사한 Tool 1 INTRO 2 git이란? SVN Mercurial 3 git의특징 4 git사용예제
Apache Subversion의 약자(SVN)은 전에개발된 CVS라는 툴의 대체 시스템으로 개발되었습니다. 효율적인 분기운영이 가능하지만 속도가 느리고 저장소가 작습니다. Mercurial은 CVS와 SVN 에없는 새로운 것들을 가진 툴이며 저장소에 프로젝트의 루트와 함께 .hg라는 단일 폴더와 함께 저장되므로 디렉토리의 파일 시스템 오염이 더 이상 발생하지 않습니다. Mercurial의 진정한 혁신은 모든 체크 아웃 및 커밋 작업이 사용자의 로컬저장소에서 작업된다는것입니다.
19
Q & A
20
Thank You
Similar presentations