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

…
고맙습니다

Git Tutorial