* SlideShare에서 특정 폰트로 쓰인 글자가 보이지 않는 경우가 있습니다. 다운로드 하셔서 PDF 리더로 보시는 것을 권해드립니다. -> 기존 폰트를 모두 나눔고딕으로 변경하였습니다.
OSS 포럼 개발 교육으로 진행한 Git, GitHub 강의 자료입니다.
(http://onoffmix.com/event/67081)
간단한 로또 번호 생성기 프로그램을 작성하면서 Git, GitHub에 대해 배웁니다.
1. Git과 Github
- 버전 관리?
- Git은 어쩌다 세상에 나왔나?
- Github?
2. Git 시작하기 - 실습
- 실습 준비 : Github, Goorm IDE 가입하기
- 리눅스 명령어와 친해지기
- Git 필수 개념 집고 넘어가기
- Step by Step Git 명령어 실습 (커밋, 브랜치, 원격 저장소 등)
- 옆자리 분과 Fork하고, Pull Request
3. Git과 Github 맛깔나게 활용하기
- Github의 협업 기능 살펴보기
- Github Page
- Gitbook
4. 있어보이는 Git 활용
- .git 디렉토리 살펴보기
- Git Branch 전략
- Commit Message 활용
Best practices with git - The essentials you should know about git to use if efficiently
Workshop by Otto Kekäläinen at OpenFest 7.11.2015, Sofia, Bulagaria.
This 68 slides beast surely has something new even for seasoned git developers!
* SlideShare에서 특정 폰트로 쓰인 글자가 보이지 않는 경우가 있습니다. 다운로드 하셔서 PDF 리더로 보시는 것을 권해드립니다. -> 기존 폰트를 모두 나눔고딕으로 변경하였습니다.
OSS 포럼 개발 교육으로 진행한 Git, GitHub 강의 자료입니다.
(http://onoffmix.com/event/67081)
간단한 로또 번호 생성기 프로그램을 작성하면서 Git, GitHub에 대해 배웁니다.
1. Git과 Github
- 버전 관리?
- Git은 어쩌다 세상에 나왔나?
- Github?
2. Git 시작하기 - 실습
- 실습 준비 : Github, Goorm IDE 가입하기
- 리눅스 명령어와 친해지기
- Git 필수 개념 집고 넘어가기
- Step by Step Git 명령어 실습 (커밋, 브랜치, 원격 저장소 등)
- 옆자리 분과 Fork하고, Pull Request
3. Git과 Github 맛깔나게 활용하기
- Github의 협업 기능 살펴보기
- Github Page
- Gitbook
4. 있어보이는 Git 활용
- .git 디렉토리 살펴보기
- Git Branch 전략
- Commit Message 활용
Best practices with git - The essentials you should know about git to use if efficiently
Workshop by Otto Kekäläinen at OpenFest 7.11.2015, Sofia, Bulagaria.
This 68 slides beast surely has something new even for seasoned git developers!
Two days git training with labs
First day covers git basis and essential commands
Second day covers git additional command with a big lab using a git workflow
Two days git training with labs
First day covers git basis and essential commands
Second day covers git additional command with a big lab using a git workflow
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)Aurimas Mikalauskas
Is my MySQL server configured properly? Should I run Community MySQL, MariaDB, Percona or WebScaleSQL? How many innodb buffer pool instances should I run? Why should I NOT use the query cache? How do I size the innodb log file size and what IS that innodb log anyway? All answers are inside.
Aurimas Mikalauskas is a former Percona performance consultant and architect currently writing and teaching at speedemy.com. He's been involved with MySQL since 1999, scaling and optimizing MySQL backed systems since 2004 for companies such as BBC, EngineYard, famous social networks and small shops like EstanteVirtual, Pine Cove and hundreds of others.
Additional content mentioned in the presentation can be found here: http://speedemy.com/17
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+githubJunyoung Lee
OSS 포럼 개발자 교육 'Git/GitHub 입문하기 - 부산'에서 Git 실습에서 사용한 자료입니다. (http://onoffmix.com/event/69536)
지난 번 자료(http://www.slideshare.net/ssusercef361/git-github-62006866)는 구름 IDE를 활용해서 진행했고, 이번 자료는 Git 클라이언트를 설치해서 진행했습니다. GitHub 가입과 Git 클라이언트 설치는 강의 전 준비(http://www.slideshare.net/ssusercef361/github-git)를 참고해주세요.
1. Git과 Github
- 버전 관리?
- Git은 어쩌다 세상에 나왔나?
- Github?
2. Git 시작하기 - 실습
- 실습 준비 : Github, Goorm IDE 가입하기
- 리눅스 명령어와 친해지기
- Git 필수 개념 집고 넘어가기
- Step by Step Git 명령어 실습 (커밋, 브랜치, 원격 저장소 등)
- 옆자리 분과 Fork하고, Pull Request
3. Git과 Github 맛깔나게 활용하기
- Github의 협업 기능 살펴보기
- Github Page
- Gitbook
4. 있어보이는 Git 활용
- .git 디렉토리 살펴보기
- Git Branch 전략
- Commit Message 활용
특정 폰트가 SlideShare.net에서 보이지 않는 관계로 모두 나눔고딕으로 통일했습니다.
[17.02.09] Github introduction (Korean Version)Ildoo Kim
Git 혹은 소스코드 형상관리를 아예 모르는 사람을 대상으로 작성한 Starter Guide입니다. 팀에 새로운 사람이 Join하는 등의 경우에 세미나 자료로 활용합니다.
형상관리/git 개념과 command line 혹은 source tree를 활용한 기본적인 사용 방법에 대해 소개합니다.
<팀을>이라는 책을 많이 참고하였습니다.
Source Tree로 버전 관리하는 법
- Git이 필요한 이유
- Stage(=Index에 기록)하기
- Commit하기
- Remote 추가하기
- Origin Remote로 GitHub 사용
- Push하기
- Clone하기
- Reset (Soft, Hard, Mixed)
- Revert
- Checkout, Detached HEAD
- 이전 Commit 수정하기
- Pull / Fetch&Merge하기
- Branch 만들기
- Fast Forward Merge하기
- 3-Way Merge하기
- 3-Way Merge에서 발생할 수 있는 Conflict 해결하기
- Visual Studio로 Conflict 해결하는 법
- Stash로 다양한 문제 해결해보기
- 오래된 저장소에서 Pull하기
- 다른 브랜치로 Commit 옮기기
- .gitignore 파일 설정하기
13. 첫 번째 문제로 돌아가봅시다
memo.txt
텍스트 파일이 하나 있고,!
수정한 내용을 기록해두고 싶다
“컵라면 1박스 구입” 이라는 수정이 발생
14. memo.txt
“수정”의 단계를 어느 정도까지 기록해야할까?
저장할 때 마다? !
컵(Save)라(Save)면(Save)… 이런식으로!
저장했다해도 모두 기록해야할까?
15. 규칙 1!
“수정”의 단계는 “의미”를 기준으로
의미를 어떻게 알지?!
SW가 의미를 인식할 수!
없으니 정할 수 있는 사람 즉,!
사용자가 정하는 것으로 하자
16. 규칙 1!
“수정”의 단계는 “의미”를 기준으로
이 파일의 수정이 끝났다 !
“이 파일의 의미있는 수준의 수정 작업이 끝났음” !
이라고 git 에게 알려주는 일
commit
17. memo.txt
맥주 구매 할 일 추가
쓰레기 봉투 구매 할 일 추가
컵라면 구매 할 일 추가
2014년 7월 10일 17:00
2014년 7월 9일 10:03
2014년 7월 6일 12:42
memo.txt
memo.txt
commit 1
commit 2
commit 3
@홍길동
@홍길동
@홍길동
세 번의 커밋
18. 맥주 구매 할 일 추가
쓰레기 봉투 구매 할 일 추가
컵라면 구매 할 일 추가
2014년 7월 10일 17:00
2014년 7월 9일 10:03
2014년 7월 6일 12:42
commit 1
commit 2
commit 3
@홍길동
@홍길동
@홍길동
수정한 내용을 간략하게 표현하기!
위한 “커밋 메세지” 기록
수정 내용!
설명
19. memo.txt
맥주 구매 할 일 추가
쓰레기 봉투, 컵라면 구매 할 일 추가
2014년 7월 10일 17:00
2014년 7월 6일 12:42
memo.txt
commit 1
commit 2
@홍길동
@홍길동
두번만 할 수 도 있겠죠?
커밋의 기준을 정하는건 사용자.!
커밋의 단위를 작게 할 수록 변경 내용의 기록!
수준은 정밀해지며 파악할 수 있는 정보도 많아진다
20. 규칙 2!
하나의 커밋(Commit)은 여러개의!
파일이 포함될 수 있다
“수정의 의미”를 확장하자!
하나의 파일을 수정하는 것,!
하나의 수정 작업이 여러 파일에 영향을!
줄 수 있는 것. 의미라는 관점에선 하나의!
수정이라고 할 수 있다
21. 화요일.txt
월,화 자율 학습 일정 추가
수요일 학습 내용 추가
수,목,금 교육 시간 수정
2014년 7월 10일 17:00
2014년 7월 9일 10:03
2014년 7월 6일 12:42
commit 1
commit 2
commit 3
@홍길동
@홍길동
@홍길동
커밋은 수정의 단위. 수정은 여러 파일
에 걸친 변경 내역의 묶음일 수 있다.
월요일.txt
수요일.txt
수요일.txt 목요일.txt 금요일.txt
22. 규칙 3!
파일을 수정하지 않고!
새로운 실험을 해 볼 순 없을까?
월,화,수,목,금 시간표 파일이 있는데
이 파일들을 변경하지 않고 새로운 월,
화,수,목,금 일정을 만들어 보고 싶다
가능할까?
23. 규칙 3!
상태를 저장하는 공간을 만들 수 있다
상태란 모든것이다. 파일, 파일의
내용, 커밋 정보 등 git 이 관리하는
모든 것을 의미한다
branch
24. git 의 시작!
지정한 폴더의 변경 내용을 추적하기위한 준비
선택된 폴더의 변경 내용을 추적하기 위해 git
저장소를 만든다. 저장소가 만들어지면 git은
지정한 폴더를 포함하여 하위 폴더의 모든 변
경 내용을 커밋 단위로 추적한다.
init
25. git 의 시작!
지정한 폴더의 변경 내용을 추적하기위한 준비
init 명령으로 저장소가 만들어질 때
git은 master라는 이름의 브랜치를
기본으로 생성하고 이 후 커밋 내용
을 브랜치 기준으로 저장한다
master
26. 화요일.txt
월,화 자율 학습 일정 추가
수요일 학습 내용 추가
수,목,금 교육 시간 수정
2014년 7월 10일 17:00
2014년 7월 9일 10:03
2014년 7월 6일 12:42
commit 1
commit 2
commit 3
@홍길동
@홍길동
@홍길동
월요일.txt
수요일.txt
수요일.txt 목요일.txt 금요일.txt
master
커밋은 브랜치 공간에 기록된다
27. master
새로운 브랜치 만들기
파일을 수정하지 않고 새로운 실험 하기
화요일.txt월요일.txt 수요일.txt 목요일.txt 금요일.txt
lab1
화요일.txt월요일.txt 수요일.txt 목요일.txt 금요일.txt
branch lab1
28. 새로 만든 브랜치 lab1 은 master와 완전히 동일한 상태를 가진 공간.
lab1 브랜치에서 수정을 한 후 커밋하면 그 변경사항은 lab1에만 기록
되며 master 브랜치에는 어떤 영향도 주지 않음
lab1
화요일.txt월요일.txt 수요일.txt 목요일.txt 금요일.txt
commit 1
화요일.txt월요일.txt 수요일.txt 목요일.txt 금요일.txt
완전히 독립된 브랜치 lab1
29. lab1
원하는 만큼 브랜치 생성 가능
lab2
git 은 매우 빠르게 새로운 독립
공간인 브랜치를 원하는 만큼
만들 수 있다. 브랜치 이름은 이
름 정의 규칙 내에서 사용자가
원하는 형태로 작명할 수 있다
30. master
lab1
checkout master
HEAD
HEAD
실험 중 다른 브랜치로 돌아가야한다면?
원한다면 언제든 다른 브랜치
(작업 공간)로 이동할 수 있다.
브랜치는 마지막 커밋 상태를
유지한다.
작업 중인 위치를 가르키는 가
상의 커서가 존재하는데 이를
git 에서는 HEAD 라 한다.
31. master
lab1
checkout master
HEAD
HEAD
브랜치를 이동하는 이유가 뭘까?
새로운 실험을 하기 위해 lab1을 만들
고 열심히 작업하고 있다. 그런데
master 브랜치에 내용을 변경할 일이
발생했다. 어떻게 해야할까?
시나리오
master 브랜치로 이동하여 변경 작업
을 처리한 후 커밋. 다시 lab1 브랜치로
돌아와 하던 실험을 계속 한다.
정답
32. 실험 종료. 선택의 순간
master
lab1
lab1에서 진행했던 실험이
예상과 달리 필요없는 작업이
되었다. 어떻게 하면 될까?
실험 실패
master로 이동 후 lab1 브랜치를
삭제한다. lab1의 모든 기록이 제거
된다. 기록 보관 차원에서 삭제하지
않아도 아무 문제 없다
정답
33. 실험 종료. 선택의 순간
master
lab1
lab1에서 진행했던 실험이 성공
적으로 끝났다. 실험의 결과를
master 브랜치에 옮기려한다.
어떻게 하면 될까?
실험 성공
lab1 브랜치의 내용을
마스터 브랜치와 병합
(merge) 한다.
정답
34. merge lab1
브랜치와 브랜치의 병합(Merge)
master
lab1
HEAD
commit 3
commit 1
commit 2
commit 4
master 브랜치에 lab1 브랜
치를 병합하면 git 은 lab1 브
랜치의 내용과 master 브랜
치의 commit 3 의 내용을 포
함하여 두 브랜치를 병합한다
병합 결과
변경 내용에 따라 파일 내용이
변경되고 때론 파일이 삭제될 수
도 있으며 추가될 수 도 있다.
41. 리모트 저장소에서 저장소 다운로드
remote.com/projectA
master
lab1
master
lab1
project A
project A
리모트 저장소에서 처음으로 git 저장소를 다운로드 받는 것을 !
복사본을 만든다는 의미로 clone 이라 한다.
clone remote.com/projectA
clone remote.com/projectA
42. 리모트 저장소의 변경 내용 업데이트
remote.com/projectA
master
lab1
master
lab1
project A
project A
리모트 저장소의 변경된 내용을 로컬(내 컴퓨터) 저장소에 적용하는!
작업을 Pull 이라 한다. 이때 브랜치 병합과 같은 병합이 발생한다.
pull origin
pull origin
43. 내 저장소(로컬 저장소)의 변경 내용 리모트로 전송하기
remote.com/projectA
master
lab1
master
lab1
project A
project A
로컬(내 컴퓨터) 저장소에서 작업한 내용을 리모트 저장소로!
보내는 작업을 Push라 한다. 함께 작업하는 동료에서 변경사항을 !
전송하기 위해선 리모트 저장소를 경유해야 한다는 것을 알 수 있다.
push origin
push origin