GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git...

23
GIT / GITHUB.COM Heeseung Jo

Transcript of GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git...

Page 1: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

GIT / GITHUB.COM

Heeseung Jo

Page 2: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

2

Git 이란

History 관리도구

==

Page 3: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

3

Github 이란

Git 이라는 도구 기반의 코드 및 프로젝트 호스팅 사이트

각종 Remote repository(원격저장소)들의 집합소

2008년 2월 서비스 시작

Page 4: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

4

Git의 기능

Source code management ToolCtrl+c,v 나 Alzip 압축파일 관리법

OSS개론 과제_최종_2016_09_08.zip

OSS개론 과제_진짜최종_2016_09_09.zip

OSS개론 과제_진짜진짜최종_2016_09_22.zip

그 사이에 뭐가 바뀌었는지차이(Diff)를 알 수 없다

Ctrl+c,v 를 할수록차지하는 용량 x 2

x 3 … + diff

Page 5: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

5

Git의 기능

Source code management ToolCtrl+c,v 나 Alzip 압축파일 관리법

OSS개론 과제_최종_2016_09_08.zip

OSS개론 과제_진짜최종_2016_09_09.zip

OSS개론 과제_진짜진짜최종_2016_09_22.zip

그 사이에 뭐가 바뀌었는지차이(Diff)를 알 수 없다

<History 관리기능>차이(Diff)가 무엇이고수정이유, Log를 남길수 있다.

<타임머신 기능>현재파일들을 안전한 상태로과거상태 그대로 복원가능(반대도 가능)

(각 버전별 차이만 저장해서 size 감소)

Ctrl+c,v 를 할수록차지하는 용량 x 2

x 3 … + diff

Page 6: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

6

Git의 기능

Source code management ToolCtrl+c,v 나 Alzip 압축파일 관리법

OSS개론 과제_최종_2016_09_08.zip

OSS개론 과제_진짜최종_2016_09_09.zip

OSS개론 과제_진짜진짜최종_2016_09_22.zip

좋은건 알겠는데..Git을 쓸 이유가 부족..

Wants는 맞지만 Needs는 아니야승리

(아직까진..)

Git 배우는데 시간소비 하느니Code 한줄이라도 더 개발..

Page 7: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

7

github 회원가입

https://github.com

Page 8: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

8

github 저장소 생성

Page 9: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

9

github 저장소 생성

> echo "# test" >> README.md

> git initInitialized empty Git repository in /tmp/temp/.git/

> git add README.md

> git commit -m "first commit"[master (root-commit) d6cd919] first commit1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 README.md

> git remote add origin https://github.com/heesn/test.git

> git push -u origin master

Page 10: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

11

실습

<Git 필수 명령>

add : 커밋할 목록에 추가commit : 커밋 (히스토리의 한 단위) 만들기push : 현재까지 역사(commits) Github에 밀어넣기

출처 : source code management system(Git) – Taeung Song,NIPA OpenFrotierLab(2016)

Page 11: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

12

실습

(아까 생성한 repo. 하위에서 작업)

소스 작성 (or 기존에 만들어 둔 것들 복사)

git add .

git status

git commit -a -m "hello"

git push

git pull

• 현재 local repo.를 최신화

Page 12: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

13

실습

새로운 폴더 생성

git clone https://github.com/heesn/test.git

Modify something

git add .

git commit -m "add something"

git push

Page 13: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

14

Collaborators 지정

Page 14: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

15

.gitignore 파일

.gitignore : repo에 저장하지 않을 파일 목록

• 보통 repo 바로 아래 위치

• https://www.gitignore.io

# Created by https://www.gitignore.io/api/c,c++

# heesntags### C #### Prerequisites*.d# Object files*.o*.ko*.obj*.elf# Libraries*.lib*.a*.la*.lo......

Page 15: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

16

Git 장점

• 로컬 및 원격 저장소 생성• 로컬 저장소에 파일 생성 및 추가• 수정 내역을 로컬 저장소에 제출• 파일 수정 내역 추적• Master에 영향을 끼치지 않는 브랜치 생성• 브랜치 사이의 병합(Merge)• 브랜치를 병합하는 도중의 충돌 감

전 세계의 수많은 사용자가 사용중

Git을 사용한 저장소를 공유 사이트인 GitHub 웹 사이트의 존재

사용자 수에서 나오는 어마어마한 숫자의 튜토리얼과 프로젝트가 존재

Page 16: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

17

프로젝트와 Git 운용 전략

hello

프로젝트명: hello

팀원:홍길동, 성춘향

Page 17: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

18

프로젝트와 Git 운용 전략

hello

홍길동/hello 성춘향/hello

Fork!!

Fork!!

프로젝트명: hello

팀원:홍길동, 성춘향

Page 18: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

19

프로젝트와 Git 운용 전략

hello

홍길동/hello 성춘향/hello

topic branchtopic banch

Fork!!

Fork!!

Pull-request !! Pull-request !!

프로젝트명: hello

팀원:홍길동, 성춘향

Page 19: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

20

프로젝트와 Git 운용 전략

hello

홍길동/hello 성춘향/hello

topic branch

Maintainer의 review

함께 discussion

topic banch

Fork!!

Fork!!

Pull-request !! Pull-request !!

프로젝트명: hello

팀원:홍길동, 성춘향

Page 20: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

21

Commit 단위개발의 정신

혼자 가면 빨리 가지만함께 가면 멀리 간다

Page 21: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

22

Commit 단위개발 IDEA

Commit 단위로 코딩하고 리뷰하고 토론하고 적용(집단지성의 극대화)

소프트웨어의 취약점을 극복하는 전략

Page 22: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

23

Git/Github(1) Review

1) Git과 Github 차이는 ?

• Git은 각 컴퓨터(local) 에 설치되어 소스코드 관리가 가능한 프로그램

• Github는 remote 저장소가 있는 외부서버를 지칭

• Git이라는 Source Control 방법을 Github이 사용

2) Commit과 Push 차이는 ?

• commit은 local 작업폴더에 history를 쌓는 것

- git 서버에 연결하지 않음

• push는 remote 저장소(Github 등)에 history를 쌓는 것

* github.com은 git 서버(remote 저장소)를 운영하는 웹사이트의 하나

Page 23: GIT GITHUB COM - CBNUcslab.cbnu.ac.kr/course/2019.2/cc/lab7.git.pdf3 Github 이란 Git 이라는도구기반의코드및프로젝트호스팅사이트 각종Remote repository(원격저장소)들의집합소

24

Git/Github(1) Review

Git/Github을 쓸 수 있다는 것은

• Source Control

• Issue Tracking/Control

• 협업 도구 (Fork / pull request)

• Statistics 등을 쓴다는 것