Download presentation
Presentation is loading. Please wait.
1
Git Jara
2
목차 Git이란? - 분산버전관리시스템(DVCS) Git 기초 Git branch Github
3
Git을 왜 쓰나? 여러 사람이 서로 동일한 프로젝트를 진행한다. 분업을 위해 각자의 작업을 한다.
여러 사람이 서로 동일한 프로젝트를 진행한다. 분업을 위해 각자의 작업을 한다. 작업을 하다보면 서로의 작업 소스가 필요할텐데 이 때마다 메일을 보내야 한다. 만약 작업인원의 수가 많다면, 누가 무 슨 작업을 진행중인지도 기억하기 어 렵다.
4
VCS(Version control System)?
각 파일, 전체 프로젝트를 이전 상태로 되돌릴 수 있다. 시간에 따라 수정 내용을 비교해 볼 수 있다. 누가 문제를 일으켰는지 추적해 볼 수 있다. CVCS나 DVCS를 사용하면 쉽게 다른 프로그래머와 협업할 수 있다.
5
CVCS vs DVCS CVCS(Centralized VCS) : 중앙 집중식 버 전 관리 시스템
DVCS(Distributed VCS) : 분산형 버전 관 리 시스템
6
CVCS의 특징 모든 파일을 관리하는 서버가 따로있고 많은 클라이언트가 이 중앙 서버에서 파일을 받아서 사용한다(Checkout). 관리하기가 쉽다 Subversion이 대표적인 예이다.
7
But, 만약 중앙서버가 한시간 동안 다운되 면 아무도 다른사람과 협업할 수 없고 했던 일을 백업할 수도 없다.
만약 중앙서버가 한시간 동안 다운되 면 아무도 다른사람과 협업할 수 없고 했던 일을 백업할 수도 없다. 만약 중앙서버의 하드디스크에 문제가 생기면 프로젝트를 복구할 수 없다.
8
DVCS의 특징 전체 저장소를 클라 이언트가 가지고 있 다.
중앙서버가 다운되거 나 인터넷을 사용 할 수 없어도 충분히 작 업을 진행할 수 있다. 중앙서버의 하드디스 크에 문제가생겨도 클라이언트의 저장소 로 복구할 수 있다.
9
git? DVCS이다. 리눅스의 창시자인 리누스 토발즈가 원래 사용하고 있던 BitKeeper라는 VCS 를 사용할 수 없게 되면서(짜증나서 2 주만에) 직접 VCS를 개발하였다.
10
git? Git은 아래의 목표를 가지고 개발되었 다. 빠른 속도 단순한 구조
비 선형적인 개발(동시 다발적인 수천개의 branch) 완벽한 분산 리눅스 커널 등 대형 프로젝트에도 유용할 것
11
Git의 세가지 상태 Commited : 데이터가 로컬DB에 안전하 게 저장되있음
Modified : 수정한 파일을 아직 로컬DB 에 commit하지 않음 Staged: 현재 수정한 파일을 곧 commit 할것이라고 표시한 상태
12
Git의 세가지 상태
13
Git에서 하는일 1. working directory에서 파일을 수정
2. Staging Area에 파일을 stage에서 커밋 할 snapshot을 만든다.(git add) 3. Staginig Area에 있는 파일을 커밋해서 git directory에 영구적인 스냅샷으로 저 장한다. (git commit)
14
Git 설치 apt-get install git
15
Git 설정 ~/.gitconfig .git/config 우리는 git config --global user.name “이름”
git config --global user. “이메일” git config --list로 확인
16
Git 저장소 만들기 git init : 현재 저장소를 git저장소로 만든다. git clone
: 이미 실행되고 있는 프로젝트 히스토리 를 모두 받아서 저장소를 만들어준다.
17
Git에서의 파일상태
18
파일 상태 확인하기 Git status vim my_project
19
파일을 새로 추적하기 Untracked -> staged git add <filename>
20
Modified -> stage 파일 수정 후 git status Changes not staged for commit:
Git add로 추가
21
파일 무시하기 .gitignore파일 <ex> *.[oa]: .o나 .a로 끝나는 파일 무시
*~: ~로 끝나는 파일 무시
22
git diff unstaged 상태의 파일의 최종 커밋으로 부터 변경사항을 알려줌
--staged : staged상태의 파일의 최종 커 밋으로부터의 변경사항을 알려줌
23
변경사항 commit Git commit :staged인 상태의 파일을 localDB에 저장
만약 nano같은 editor가 뜨면 Git config –global core.editor로 바꿔주자
24
Commit history 조회 Git log -p : 각 커밋의 diff 결과를 보여줌
--since : 명시한 날짜 이후만 --author: 입력한 저자의 커밋만
25
되돌리기 Git commit --amend Add하지 말아야했을 것을 add한 경우:
(ex) git commit -m “initial commit”; Git add forgotten_file Git commit –ammend 2번째 commit에 첫번째 commit을 덮어쓴다. Add하지 말아야했을 것을 add한 경우: Git reset HEAD <파일이름>
26
리모트 저장소 Git remote: 현 리모트저장소를 확인 가 능 Git fetch [remote-name]
리모트저장소에서 데이터 가져오기 Git pull [remote-name] Fetch 후 merge Git push [remote-name] [branch-name]: 브랜치에 현재까지 커밋한 것 추가
27
Git 브렌치란? 커밋을 가리키는 포인터 큰 나무의 가지라고 생각합시다. 보통 작업을 분업할 때 많이 사용합니 다.
28
새 브렌치 생성하기 git branch [branch-name] : 현재 브랜치가 가리키는 커밋에 새로운 브랜치를 만든다.
: 현재 브랜치가 가리키는 커밋에 새로운 브랜치를 만든다. Git log --decorate : 쉽게 브렌치가 어떤 커밋을 가리키는지 확인가능
29
Branch 이동 Git checkout [branch-name] : 다른 브렌치로 head가 이동
-b : branch를 만들고 그 브랜치로 이동
30
example
31
example
32
브랜치와 Merge의 기초
33
브랜치와 Merge의 기초
34
브랜치와 Merge의 기초
35
브랜치와 Merge의 기초
36
브랜치와 Merge의 기초
37
Merge conflict란? Merge를 할 때 두 브랜치에서 작업한 내용이 충돌할 수 있습니다.
--제가 한 번 보여드리겠습니다.
38
Long running branch 배포했거나 배포 할 code들만 master branch가 가리킨다.
개발하고있는 code는 develop이라는 branch를 만들어 개발한다. develop branch가 안정되면 master branch와 merge한다.
39
Long running branch
40
리모트 브랜치 리모트 저장소에 있는 브랜치 우리 서버에서는 리모트 트래킹 브랜 치(리모트 브랜치를 추적(tracking)하는 브랜치) 리모트 트래킹 브랜치는 리모트서버와 연결될 때 리모트 서버를 기억한다. 로 컬에서는 움직일 수 없다.
43
브렌치 추적 리모트 트래킹 브랜치를 로컬 브랜치 로 checkout하면 트래킹 브랜치가 생성
트래킹 브랜치에서 git pull을 하면 리모 트 저장소로부터 데이터를 내려받아 리모트 브랜치와 자동으로 merge Git checkout –b [branch] [remotename]/[branch]
44
Git pull Git fetch: 서버에서 데이터를 받아와 로 컬에 저장 Git Pull: fetch후 merge해준다.
45
Git push 로컬의 브랜치에 작업한 커밋을 리모 트 저장소로 전송함
Push하기 전에 pull을 받고 수정하자.[다 른 사람이 서버에 작업한 게 있을 수 있 다]
46
rebase
47
Rebase의 위험성 이미 공개저장소에 push한 커밋을 rebase하지마라
48
Merge vs rebase Rebase를 하면 커밋 로그에 깨끗해져요
Merge를 하면 merge를 했다는 기록이 남게 되요. 스팍스에서는 rebase를 하는 걸로 교육받았습니 다. git pull --rebase pull하실 때 뒤에 rebase옵션을 붙여주세요.
49
GitHub Githb는 가장 큰 git 저장소 호스트입니 다.
수백만 개발자가 모여서 수백만 프로 젝트가 수행중입니다. (sp lab이라던가, KENS라던가, Pintos라던가…) 스팍스의 프로젝트도 모두 github에서 오픈소스로 관리하고 있습니다.
50
Github 등록 가입해주세요.
51
Git protocol Git에서는 4가지 통신 protocol이 사용 가능합니다.(local, ssh, http, git)
52
ssh 공개키 만들기 공개키를 이용해서 github가 우리의 localdirectory가 누구의 것인지 식별할 것입니다.
Cd ~/.ssh -> id_dsa.pub있는지 확인 없으면 ssh-keygen으로 생성 Cat ~/.ssh/id_rsa.pub
53
Ssh키 등록 계정 설정에 들어가서 ssh 키를 등록하 자
54
오늘의 실습 Github에 가입후 ssh키를 등록하자 개인 repository를 만들자
Reposytory를 clone한 후에 아무거나 작 업해서 커밋한 후 push Adios.
55
오늘의 과제 신입생 프로젝트를 github에서 진행해 봅시다.
Similar presentations