git tutorial
TRANSCRIPT
Git 사용법 세미나바라미 19기 남상규
! [email protected] " 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
…
고맙습니다