20
Git 이야기 오혁 [email protected]

Story About Git_oh4851

Embed Size (px)

Citation preview

순서

• Git(msysgit) 설치하기

• SSH키 등록하기

• GitLab프로젝트 생성하기

• Git 이야기

• 첫 번째 PUSH 하기

Git(msysgit) 설치하기

• 다운로드: http://www.git-scm.com/downloads

(설치파일을 실행하고 Next버튼을 눌러줍니다)

• 바탕화면에 다음 아이콘을 실행합니다

• 커맨드 라인에 git --version을 입력합니다 (버전 정보가 나오면 설치 성공)

Git(msysgit) 설치하기

Git Bash

$ git --version git version 2.3.2 (Apple Git-55)

SSH키 등록하기

• SSH키 쌍(Public/Private)을 생성합니다

$ ssh-keygen -t rsa -b 1024 -C “[email protected]

Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter] Enter passphrase (empty for no passphrase): [Type a passphrase] Enter same passphrase again: [Type passphrase again]

• SSH키를 ssh-agent에 등록합니다

$ eval “$(ssh-agent -s)” Agent pid 50530 $ ssh-add ~/.ssh/id-rsa

SSH키 등록하기

• (1)profile setting -> (2)SSH Keys -> (3)Add SSH Key1

2

3

• ~/.ssh/id_rsa.pub의 내용을 Key필드에 입력합니다

GitLab프로젝트 생성하기

• 새로운 프로젝트를 생성합니다 (우선 생성만하고 넘어 갑니다)

Git 이야기

• 버전관리가 왜 필요할까요?

0530_최종완성 0530_진짜최종0530_최종완성_진짜끝

이메일, 카톡, 알집으로 한번쯤은.. 나중에 보면 이 파일이 저 파일 같고.. 실수로 최근 버전을 지우면?..

Git 이야기

• SVN이랑은 조금 다르다던데..

작업공간 저장소

서버내 컴퓨터

commit

SVN

작업공간 원격저장소

GitHub, GitLab 등내 컴퓨터

로컬저장소

commit push

GIT

Git 이야기

• 덕분에 이런 장점들이 있습니다

1) 부담없이 커밋할 수 있습니다(로컬저장소에서 마음껏 테스트하고 연습할 수 있습니다)

2) 원격저장소를 사용할 수 없어도 계속 버전관리가 가능합니다(인터넷을 경유하지 않고 커밋을 계속해 나갈 수 있습니다)

3) 원격저장소가 망가지면 로컬저장소로 복원이 가능합니다(모든 로컬저장소가 하나의 저장소이기 때문입니다)

Git 이야기

• Git은 작업공간과 로컬저장소 사이에 한 단계가 더 있습니다

작업공간 원격저장소

GitHub, GitLab 등내 컴퓨터

로컬저장소

commit push

GIT

스테이지 영역

add

• Git에서 파일은 다음과 같은 상태로 관리됩니다

Untracked

Tracked Staged

Modified

Unmodified(Commited)

add

commit

modify

Git 이야기

• 원격 저장소에서 다른 사람이 작업한 내용을 받아올 때

작업공간 저장소

서버내 컴퓨터

update

SVN

작업공간 원격저장소

GitHub, GitLab 등내 컴퓨터

로컬저장소

merge fetch

GIT

pull

Git 이야기

• 앞서 말한 것 외에도 더 많은 것에 얘기하고 싶었지만.. (시간을 핑계로 넘어가겠습니다)

1) 스냅샷(SVN은 파일의 변화를 저장, Git은 해당 시점의 스냅샷으로 관리합니다)

2) 브랜치(브랜치를 나눠서 마음껏 테스트하고 삭제하거나 병합할 수 있습니다)

3) 태그(커밋 이외에 태그를 지원해 중요 시점을 표시할 수 있습니다)

4) 머지/리베이스(여러개의 브랜치를 병합하는 방법입니다) stash, diff, 대화형 커밋 등...

첫 번째 PUSH 하기

• git에 내 정보 등록하기 (commit을 하게되면 author로 표시할 정보 등록)

• git init(현재 디렉토리를 working directory로 만드는 명령)

$ git config --global user.name “Hyeok Oh” $ git config --global user.email “[email protected]” --global 옵션은 전역 설정, 해당 옵션 없으면 현재 working directory만 적용합니다 $ git config --list git 설정 상태를 확인합니다

$ mkdir first $ cd first $ git init first디렉토리를 working directory로 만들었습니다 (.git이라는게 생겼습니다)

첫 번째 PUSH 하기

• git status(working directory에 있는 파일들의 상태 확인 명령)

• README.md 파일 생성(md는 markdown문서의 확장자)

$ git status

$ vim README.md 다른 편집툴로 first디렉토리에 만들고 저장해도 됩니다

i(insert mode) -> “Hello World” 입력 -> ESC -> :wq $ git status

첫 번째 PUSH 하기

• git add 파일/디렉토리명 (untracked/modified한 파일을 staged로 만드는 명령)

• git commit / git commit -m “할말”(staged된 파일들을 unmodified(commited)한 상태로 만드는 명령)

$ git add README.md $ git status

$ git commit -m “initial commit” $ git status

첫 번째 PUSH 하기

• git log(commit한 내역을 볼 수 있는 명령)

• git remote add 별명 저장소주소 (remote repository를 등록하는 명령)

$ git log git log --oneline --decorate --graph 이렇게도 해보세요

$ git remote add origin [email protected]:oh4851/Javascript-basic.git $ git remote -v 현재 등록한 remote repository를 확인할 수 있습니다

첫 번째 PUSH 하기

• git push 별명 브랜치명(local에서 작업한 내역을 remote repository에 반영하는 명령)

$ git push origin master git push -u origin master 다음부터 git push를 하면 자동으로 origin의 master브랜치로 푸쉬합니다 git push origin +master 강제(force)로 푸쉬하도록 함 *주의, 공동 작업자가 무척 화낼 수 있습니다

참고자료

• Pro Git 서적 번역http://git-scm.com/book/ko

• git-basic-commandshttp://www.slideshare.net/insanehong/gitbasiccommands

• 버전관리를 들어본적 없는 사람들을 위한 DVCS - Git http://www.slideshare.net/ibare/dvcs-git

• svn 능력자를 위한 git 개념 가이드http://www.slideshare.net/einsub/svn-git-17386752

메일로 언제든 질문/조언 주세요

감사합니다.