git tutorial

Post on 14-Aug-2015

202 Views

Category:

Software

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Git  사용법  세미나바라미  19기  남상규

!  pokeplus@gmail.com  "  sanggyu.nam  #  kyukyukyu

청자를  고려한  말하기컴퓨터  외  전공자  분이  많으니까...

Source:  Meme  Center

Git이  무엇인가

Source:  Startup  Kit

프로젝트_최종본_진짜마지막.zip  식의  조악한  버전  관리

프로젝트_최종본_진짜마지막.zip  식의  조악한  버전  관리

협업  할  때  다른  사람의  작업  내역을  날려버리는  경우

프로젝트_최종본_진짜마지막.zip  식의  조악한  버전  관리

협업  할  때  다른  사람의  작업  내역을  날려버리는  경우

이런  참사!  더  이상은  Naver...

DVCS  (Distributed  Version  Control  System:  분산  버전  관리  시스템)

DVCS  (Distributed  Version  Control  System:  분산  버전  관리  시스템)

요즘  대세:  GitHub,  BitBucket

DVCS  (Distributed  Version  Control  System:  분산  버전  관리  시스템)

요즘  대세:  GitHub,  BitBucket

사실  발표자가  이거  말고  쓸  줄  아는  게  없음

Git을  설정해  봅시다!

원래  Git은  shell에서  써야  제맛이지만

원래  Git은  shell에서  써야  제맛이지만

청자를  고려하여  SourceTree  on  Windows  사용

원래  Git은  shell에서  써야  제맛이지만

청자를  고려하여  SourceTree  on  Windows  사용

설치부터  들어갈게요

https://www.sourcetreeapp.com

체크  해야  사용  가능

SourceTree가  지원하는  Git과  Mercurial을  다운로드  &  설치

실행  파일  같이  보통  버전  관리  잘  안  하는  파일들을관리하지  않는  옵션을  기본으로  설정할  것인지  물어  봄

Git/Mercurial  호스팅  서비스와의  연동  설정

https://github.com

SSH  키  설정해둘  거냐고  묻는  창

SSH  키  설정해둘  거냐고  묻는  창

그런  거  들어  본  적  없으면  일단  이거  클릭

여기서부터잠깐만  귀찮아요

인증키를  만듭시다

인증키  생성의  Randomness를올리기  위해  (드립  아님)  마우스를  쉐킷쉐킷

인증키가  생성되었습니다

인증키를  보호하는  암호를  설정하고  인증키를  저장

1.  암호  설정

2.  인증키  저장

복사해두기

복사해둔  거  붙여넣기

인증키  사용을  위해  Pageant  실행

[Add  Key]  눌러서  아까  저장한  private  key  열기

암호  입력하고  [OK]  누르면 Pageant가  켜진  동안  해당  인증키를  사용하여  통신

설정의  마지막  단계!

이름,  이메일  입력

귀찮은  거  끝!

(드디어)  사용해  봅시다

저장소  생성  &  커밋

저장소를  만듭시다

저장소가  ‘될’  경로

이제  막  만들었으니  든  게  없겠죠

파일을  만들고  (좀  기다리면)  이렇게  Unstaged  영역에  뜨는데,[Stage  hunk]를  누르거나  파일에  체크를  하면

이렇게  Staged  영역(index)으로  이동합니다

Source:  누구나  쉽게  이해할  수  있는  Git  입문

아래의  텍스트  상자에  커밋  메시지를  작성하고  커밋을  하면

커밋  로그에서  확인할  수  있습니다

파일을  수정하고  나서  Git  저장소  상태를  확인하면파일의  변경사항이  나타나는데

이렇게  변경사항  중  일부를  선택하고[Stage  lines]를  누르면

해당  내용만  Staged  영역(index)에  올릴  수  있습니다

아까와  마찬가지로  커밋  메시지를  작성하고  커밋!

잘  들어가네요

잘  들어가네요

변경된  파일이  있는데  커밋으로  안  올라가서  나타남

가지  따기  (branching)

Branch  버튼을  눌러  보시면

브랜치  만드는  창이  나타납니다

체크하셔야  새로  만든  브랜치로바로  이동합니다

앞에서  설정한  대로  새로  만든  브랜치도가장  마지막  커밋을  가리킵니다

현재  브랜치는이와  같이  다르게  표시됩니다

작업을  열나게  하고

아까  배운  대로  커밋을  쌓아나가면  되지요

[Checkout]  버튼을  눌러  다른  브랜치로  갈아타  봅시다

창이  열리면  갈아탈  대상을  선택할  수  있습니다

여기서  브랜치를  쉽게  선택할  수  있어요

파일  내용이  master  브랜치가가리키는  상태로  돌아갔네요

내친김에  브랜치  하나만  더  파  봅시다

새  브랜치에서  커밋을  쌓아나가면

커밋  로그가  이렇게  나타나네요

일단  다시  master  브랜치로  체크아웃

합치기  (merging)

[Merge]  버튼을  누르시면

현재  브랜치와  작업  내역을  합치기  위한  창이  나타납니다

stack  브랜치와  합쳐  볼게요

master  브랜치가  stack  브랜치와같은  커밋을  가리키게  되었습니다

이번엔  heap  브랜치와  합쳐  볼게요

충돌이  발생하였군요충돌을  해결해야  합치기  작업이  끝납니다

충돌이  발생하면 두  부모의  작업  내역  모두가  해당  파일에  기록됩니다

SourceTree에서는  내  (여기선  master)  변경사항들혹은  합치기  대상의  (여기선  heap)  변경사항들  중  하나로  퉁칠  수도

근데  충돌이  항상  그렇게  깔끔한  건  아니니까보통은  직접  파일  수정해서  해결하고  Git에게  말해줍니다

충돌이  발생한  경우엔  머지  커밋을  반드시  작성하게  됩니다

충돌이  발생한  경우엔  머지  커밋을  반드시  작성하게  됩니다아깐  머지  커밋  없었는데?  충돌이  없어  fast-forward가  일어남!

파일  추가/제거  &되돌리기

SourceTree에서는  그냥  체크상자를  체크하면  되지만[Add]  버튼을  눌러도  됩니다

Staging  영역(index)에  올라온  상태에서  커밋  하면이  커밋에는  파일이  추가된  변경사항이  기록됩니다

파일을  제거하려면  일단  저장소  내의  모든  파일을  표시합니다

제거할  파일을  선택하고  [Remove]  버튼을  클릭하면

Staging  영역(index)에  파일  삭제  내역이  올라갑니다

어  근데  뭔가  실수한  거  같아요!마지막  커밋  상태로  복구하기  위해  [Discard]  버튼을  누릅니다

‘Reset  All’  탭에  들어간  다음  [Reset  All]  버튼을  누르면  됩니다

음..  근데  실수가  아니었네요.다시  지우는  김에  저장소에서  파일을  제거하는

다른  방법을  살펴  볼게요.  일단  파일을  직접  지우고...

SourceTree에서  파일을  체크하여 staging  영역으로  올리면  됩니다.

어떤  방법으로든  저장소에서  파일을  제거했으면커밋을  통해  파일이  제거됐다는  변경  내역을  기록합니다

원격  저장소  사용하기

일단  GitHub에  새로운  저장소를  만들어야  합니다

이름,  설명을  마음대로  설정하고[Create  repository]를  클릭합니다

근데  이  녀석은  체크하면  안  돼요여러분  컴퓨터에  만든  로컬  저장소를  올릴  거니까

원격  저장소가  생겼습니다로컬  저장소와  연결하기  위해  일단  원격  저장소  주소를  복사합니다

우린  SSH  프로토콜을  사용하니까  이걸  선택

여길  들어가면

창이  하나  뜨는데,여기에  아까  복사해둔  원격  저장소  정보를  입력합니다

이거  체크해두세요웬만하면  다른  원격  저장소를  쓸  일이  없어요

여기에  GitHub  사용자  이름을  입력하세요

등록이  잘  되네요

로컬  저장소의  내용을  원격  저장소로  올리려면[Push]  버튼을  누릅니다

브랜치  단위로  내용을  올릴  수  있습니다원격  저장소에  올릴  브랜치를  선택하세요

그러면  이런  경고창이  뜹니다GitHub에  처음  접속해서  그런  거니까  걱정  마시고  [Yes]를  누르세요

origin/master  브랜치와master  브랜치가  같은  커밋을  가리킵니다

GitHub에  있는  여러분의  저장소에  다시  들어가면이렇게  동기화된  저장소의  내용이  나타납니다

SourceTree에서처럼  커밋  로그도  확인할  수  있고요

각  커밋의  내용도  확인할  수  있네요

특정  커밋에서의  저장소의  상태도  확인할  수  있습니다

이번에는  다른  저장소의  내용을  받아와  보죠일단  SSH  프로토콜을  사용하는  저장소  주소를  확인합니다

SSH를  선택하세요

저장소  주소를  복사해둡니다

SourceTree에서  새로운  저장소를  추가합니다

1.  이거  눌러서  창을  띄우고

2.  복사해둔  주소를  붙여넣고

3.  저장소의  내용이  들어갈  경로를  선택합니다

잘  받아지네요

저장소의  커밋  로그도  확인할  수  있고요

일단  여기까지!

tag

rebase

rebase  -i

cherry-pick

reflog

고맙습니다

top related