git & github seminar-1

59
2014년 12월 29일 경희대학교 컴퓨터공학과 한상윤 Git / GitHub Mobile Convergence Laboratory

Upload: sangyun-han

Post on 09-Aug-2015

317 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Git & Github Seminar-1

2014년 12월 29일

경희대학교 컴퓨터공학과

한상윤

Git / GitHub

Mobile Convergence Laboratory

Page 2: Git & Github Seminar-1

목차

• Git / GitHub 소개

• Git 설치 및 설정

• Git 사용법

• add와 commit

• GitHub(원격저장소) 연결

1 /Mobile Convergence Laboratory

Page 3: Git & Github Seminar-1

Git이란?

• 프로젝트(소스코드, 리소스 등)를 관리하기 위한분산 버전 관리 시스템(DVCS)

• 네트워크에 접근하거나 중앙 서버에 의존하지 않는 완전한 형태의 저장소

• 리누즈 토발즈가 리눅스 커널 개발에 이용하려고최초 개발 및 사용

Mobile Convergence Laboratory

Page 4: Git & Github Seminar-1

Mobile Convergence Laboratory

버전 관리 저장소

Page 5: Git & Github Seminar-1

Mobile Convergence Laboratory

문서 or 소스코드 등의 수정 내역을 기록

Test 2014.file

Test 2014.file

서로 다른 버전

Page 6: Git & Github Seminar-1

수정할 때마다 다른 이름의 파일로 저장한다면?

5 /Mobile Convergence Laboratory

source ver 1.0 source ver 1.1 source ver 1.3 source ver ?.?

수정하는 사람이 여러 명이라면?

Page 7: Git & Github Seminar-1

무식한 버전 관리의 폐해

6 /Mobile Convergence Laboratory

Page 8: Git & Github Seminar-1

Mobile Convergence Laboratory

버전 관리 시스템

버전 관리를 위한 소프트웨어

이력관리를위한 저장소

Page 9: Git & Github Seminar-1

Git이란?

• 프로젝트(소스코드, 리소스 등)를 관리하기 위한분산 버전 관리 시스템(DVCS)

• 네트워크에 접근하거나 중앙 서버에 의존하지 않는 완전한 형태의 저장소

• 리누즈 토발즈가 리눅스 커널 개발에 이용하려고최초 개발 및 사용

Mobile Convergence Laboratory

버전 관리 시스템? OK그럼 분산은?

Page 10: Git & Github Seminar-1

Git이란?

• 프로젝트(소스코드, 리소스 등)를 관리하기 위한분산 버전 관리 시스템(DVCS)

• 네트워크에 접근하거나 중앙 서버에 의존하지 않는 완전한 형태의 저장소

• 리누즈 토발즈가 리눅스 커널 개발에 이용하려고최초 개발 및 사용

Mobile Convergence Laboratory

버전 관리 시스템? OK그럼 분산은?

Page 11: Git & Github Seminar-1

Mobile Convergence Laboratory

분산 버전 관리 시스템

중앙 집중식 버전 관리 시스템 분산 버전 관리 시스템

로컬 저장소를 가지며 이를 가지고 작업 가능

Page 12: Git & Github Seminar-1

Mobile Convergence Laboratory

분산 버전 관리 시스템

중앙 집중식 버전 관리 시스템 분산 버전 관리 시스템

로컬 저장소를 가지며 이를 가지고 작업 가능

Page 13: Git & Github Seminar-1

Mobile Convergence Laboratory

Git? 분산 버전 관리 시스템!!

Ok!!

Page 14: Git & Github Seminar-1

13 /

Github는 뭐지?

Page 15: Git & Github Seminar-1

GitHub

• git을 호스팅해주는 웹서비스

• Git 저장소 서버를 대신 유지 및 관리해주는 서비스

• 오픈소스 프로젝트 = 무료 / private 프로젝트 = 유료

14 /Mobile Convergence Laboratory

Page 16: Git & Github Seminar-1

Mobile Convergence Laboratory

Git 원격 저장소를 제공

Github의 역할

유사 서비스 : bitbucket

Page 17: Git & Github Seminar-1

Git 설치 및 설정

16 /Mobile Convergence Laboratory

Page 18: Git & Github Seminar-1

Mobile Convergence Laboratory

Windows 설치

Page 19: Git & Github Seminar-1

Windows 터미널 프로그램

18 /Mobile Convergence Laboratory

Page 20: Git & Github Seminar-1

Mobile Convergence Laboratory

Linux 설치

1. sudo apt-get install git-core git-doc

2. git --version

3. 설치 완료

Page 21: Git & Github Seminar-1

Git 사용1. 저장소 생성

2. 사용자 정보 입력

3. 변경 적용

4. 프로젝트 상태 확인

20 /Mobile Convergence Laboratory

Page 22: Git & Github Seminar-1

Mobile Convergence Laboratory

저장소 생성하기(명령어 : git init)

1. mkdir git-test

2. cd git-test

3. git init

Page 23: Git & Github Seminar-1

Mobile Convergence Laboratory

저장소 받아오기(명령어 : git clone)

1. 로컬 저장소에서 받아오기git clone /로컬/저장소/경로

2. 원격 저장소에서 받아오기git clone 사용자명@호스트:/원격/저장소/경로git clone 저장소 주소(ex: git clone git://github.com/sangyunHan/kairos-xxx)

Page 24: Git & Github Seminar-1

커미터 등록

• Git을 사용하는 사용자에 대한 정보를 git에 등록한다.

• 공동 작업을 할 때 각각의 버전이 누구의 작업인지 구별해주는역할

• git config --global user.name “사용자명”

• git config --global user.email “사용자 이메일"

23 /Mobile Convergence Laboratory

Page 25: Git & Github Seminar-1

작업의 흐름

Mobile Convergence Laboratory

작업 공간(working dir)

로컬 저장소

(head)

원격 저장소인덱스

(staging area)

Git GitHub

add commit push

Page 26: Git & Github Seminar-1

인덱스의 중요성!

Mobile Convergence Laboratory

작업공간

Page 27: Git & Github Seminar-1

add와 commitgit status

git add

git commit

Mobile Convergence Laboratory 26 /

Page 28: Git & Github Seminar-1

상태보기(명령어 : git status)

27 /Mobile Convergence Laboratory

Page 29: Git & Github Seminar-1

파일 추가

28 /Mobile Convergence Laboratory

Page 30: Git & Github Seminar-1

파일 추가 후 상태

29 /Mobile Convergence Laboratory

Page 31: Git & Github Seminar-1

파일 추가 후 상태

30 /Mobile Convergence Laboratory

인덱스(staging area)에 등록되지 않아서 버전관리가 되고 있

지 않은 파일들

Page 32: Git & Github Seminar-1

add : 인덱스에(staging area) 등록

• git add 파일명(ex: git add file.c)

31 /Mobile Convergence Laboratory

Page 33: Git & Github Seminar-1

작업의 흐름

Mobile Convergence Laboratory

작업 공간(working dir)

로컬 저장소

(head)

원격 저장소인덱스

(staging area)

Git GitHub

add commit push

file.c

Page 34: Git & Github Seminar-1

commit : 저장소에 등록

• git commit –m “이번 commit에 대한 설명"

33 /Mobile Convergence Laboratory

Page 35: Git & Github Seminar-1

commit : 저장소에 등록

• git commit –m “이번 commit에 대한 설명"

34 /Mobile Convergence Laboratory

커밋에 대한 메시지

Page 36: Git & Github Seminar-1

작업의 흐름

Mobile Convergence Laboratory

작업 공간(working dir)

로컬 저장소

(head)

원격 저장소인덱스

(staging area)

Git GitHub

add commit push

file.c

Page 37: Git & Github Seminar-1

파일 수정

36 /Mobile Convergence Laboratory

코드 추가

Page 38: Git & Github Seminar-1

add 후, status 확인

37 /Mobile Convergence Laboratory

Page 39: Git & Github Seminar-1

작업 이력 확인(명령어 : git log)

38 /Mobile Convergence Laboratory

Page 40: Git & Github Seminar-1

작업 이력 확인(명령어 : git log)

39 /Mobile Convergence Laboratory

커밋 리비전

각각의 커밋에 대한 고유 IDSHA-1 해시값으로 구성

Page 41: Git & Github Seminar-1

작업 이력 확인(명령어 : git log)

40 /Mobile Convergence Laboratory

커밋 작성자 정보

Page 42: Git & Github Seminar-1

작업 이력 확인(명령어 : git log)

41 /Mobile Convergence Laboratory

커밋 날짜와 시간

Page 43: Git & Github Seminar-1

작업 이력 확인(명령어 : git log)

42 /Mobile Convergence Laboratory

커밋에 대한 메시지들

Page 44: Git & Github Seminar-1

변경 취소(이전 commit 내용 가져오기)

43 /Mobile Convergence Laboratory

Page 45: Git & Github Seminar-1

작업의 흐름

Mobile Convergence Laboratory

작업 공간(working dir)

로컬 저장소

(head)

인덱스(staging area)

Git

add commit

file.c

printf(“change 1”);

file.c

printf(“change 1”);printf(“change 2”); printf(“change 3”);printf(“change 4”);

checkout

Page 46: Git & Github Seminar-1

변경 취소(명령어 : git checkout 파일명)

45 /Mobile Convergence Laboratory

checkout 결과

Page 47: Git & Github Seminar-1

GitHub[원격 저장소] 연결1. 계정 생성

2. SSH Key 인증

3. Repository 생성

Mobile Convergence Laboratory 46 /

Page 48: Git & Github Seminar-1

GitHub 계정 생성

47 /Mobile Convergence Laboratory

Page 49: Git & Github Seminar-1

SSH key 발급

• ssh-keygen –t rsa –C “E-mail”

48 /Mobile Convergence Laboratory

키값이 저장된 곳

Page 50: Git & Github Seminar-1

SSH key 발급

• Key가 저장된 경로에서 키값 복사

49 /Mobile Convergence Laboratory

Page 51: Git & Github Seminar-1

SSH keys 등록

50 /Mobile Convergence Laboratory

Page 52: Git & Github Seminar-1

SSH keys 등록

51 /Mobile Convergence Laboratory

키값 붙여넣기

git_test

Page 53: Git & Github Seminar-1

SSH keys 등록 완료

52 /Mobile Convergence Laboratory

Page 54: Git & Github Seminar-1

GitHub repository 생성

53 /Mobile Convergence Laboratory

Page 55: Git & Github Seminar-1

GitHub repository 생성

54 /Mobile Convergence Laboratory

Page 56: Git & Github Seminar-1

GitHub repository 생성

55 /Mobile Convergence Laboratory

해당 repository의이름과 간단한 설명

Page 57: Git & Github Seminar-1

프로젝트의 라이선스 선택

56 /Mobile Convergence Laboratory

Page 58: Git & Github Seminar-1

GitHub repository 생성 완료

57 /Mobile Convergence Laboratory

Page 59: Git & Github Seminar-1

Q&A

58 /