1
목차 Github 개요 Github 계정만들기 Github 저장소만들기 Github 저장소를이용한작업하기 팀구성하여공동작업하기 2 System Security Lab@Myongji Univ.
GitHub github.com git 기반의공개 SW 호스팅사이트 웹사이트를통해팀프로젝트에필요한유용한기능을제공 소스코드, 커밋히스토리, 브랜치등을확인 이슈추적하기 이슈를생성하고우선순위를부여할수있고투표도가능 태그를생성하여이슈를원하는태그로분류할수있음 위키 (wiki) 문서화도구로제공하며, 기본위키의문법을대부분지원함 3 System Security Lab@Myongji Univ.
GitHub 계정만들기 4
GitHub 계정만들기 1. http://github.com 접속 2. Signup 클릭 3. 필요사항입력 - Username - Email Address - Password 4. Create an account 클릭 5 System Security Lab@Myongji Univ.
SSH Key 등록 1. SSH Key 생성하기 - 터미널에서다음과같이 SSH 키를생성함 $ ssh-keygen t rsa C E-mail 6 System Security Lab@Myongji Univ.
SSH Key 등록 2. SSH Key 복사하기 - $ cd.ssh - $ cat id_rsa.pub - cat으로출력된내용을마우스로드래그 & 복사 7 System Security Lab@Myongji Univ.
SSH Key 등록 3. Github 에등록하기 - 좌측메뉴중에서 SSH Keys 클릭 - github 사이트에서 우측상단아이콘클릭 Settings 클릭 8 System Security Lab@Myongji Univ.
SSH Key 등록 3. Github 에등록하기 ( 계속 ) - New SSH Key 를클릭한후, 터미널에서복사했던 SSH 키를붙여넣고 Add SSH key 클릭 9 System Security Lab@Myongji Univ.
SSH Key 등록 3. Github 에등록하기 ( 계속 ) - 가입시입력한비밀번호입력 - 완료 10 System Security Lab@Myongji Univ.
GitHub 저장소 (repository) 만들기 11
GitHub 저장소만들기 1. 메인페이지에서 New repository 클릭 12 System Security Lab@Myongji Univ.
GitHub 저장소만들기 2. Repository 이름, 공개 (public) 여부등을입력한후 Create repository 클릭 13 System Security Lab@Myongji Univ.
GitHub 저장소를이용한 작업하기 14
1. GitHub 저장소복제하기 1. GitHub 에서생성한원격저장소를내 PC 에 clone - $ cd git-test git init 으로초기화해놓은지역저장소 - $ git clone https://github.com/id/ 저장소이름 앞 p.13 에서만든저장소 예 ) - $ cd 저장소이름 - $ git remote -v -- 원격저장소정보보기 15 System Security Lab@Myongji Univ.
실습 (1) 1. 내 PC 에 clone 된 repository 에새파일생성 - $ cd 클론된저장소이름 - $ echo Hello GitHub!! > hello.txt -- 새파일 hello.txt 생성 2. 새파일 hello.txt 를 add 및 commit - $ git add hello.txt - $ git commit m my commit message 16 System Security Lab@Myongji Univ.
실습 (2) 3. 내 PC 저장소의내용을 GitHub 저장소로 push - $ git remote v -- 외부 repository 내용을확인 - $ git push 17 System Security Lab@Myongji Univ.
실습 (3) 5. github.com 에서확인 18 System Security Lab@Myongji Univ.
2. 원격브랜치 (1) 원격브랜치 (remote branch) : 원격저장소에있는브랜치 원격저장소를 clone 하면자동으로원격저장소이름은 origin origin 원격저장소의 master 브랜치는 origin/master 로표시 github.com master 98ca9 34ac2 f30ab git clone. My Computer origin/master 원격브랜치 98ca9 34ac2 f30ab master 지역브랜치 19 System Security Lab@Myongji Univ.
2. 원격브랜치 (1) Clone 을한원격브랜치정보보기 $ git branch r -- 원격브랜치확인 $ git branch -a -- 모든 ( 원격 / 지역 ) 브랜치확인 ( 참고 ) 원격브랜치삭제하기 $ git push remote-name :branch-name 예 ) git push origin :nb1 20 System Security Lab@Myongji Univ.
2. 원격브랜치 (2) 원격과지역저장소의커밋은독립적임 - 원격저장소에다른팀원이 push 하여 master 브랜치를변경하면 github.com 98ca9 34ac2 f30ab master 890ca 누군가 push 를해서변경됨 - 내컴퓨터에서 master 브랜치에한번의커밋을실행하면 My Computer origin/master git status 명령을해보면 master 와 origin/master 의커밋차이를보여줌 98ca9 34ac2 f30ab f99ab master 21 System Security Lab@Myongji Univ.
2. 원격브랜치 (3) 원격저장소의최신내용을가져옴 : git fetch 또는 git pull github.com master 98ca9 34ac2 f30ab My Computer git fetch origin 대응하는원격브랜치 origin/master 로가져옴 890ca origin/master 890ca (4-1) 또는 (4-2) 98ca9 34ac2 f30ab f99ab master 22 System Security Lab@Myongji Univ.
2. 원격브랜치 (4-1) 앞에서 fetch 한원격저장소의최신내용을내 master 브랜치에머지하려면 $ git merge origin/master -- master 에 origin/master 의내용을합치고새로운한커밋까지수행함 My Computer origin/master 890ca 98ca9 34ac2 f30ab 7653c f99ab master master 에 origin/master 의내용을합치고커밋이하나추가됨 23 System Security Lab@Myongji Univ.
2. 원격브랜치 (4-2) 앞에서 fetch 한원격저장소의최신내용을내브랜치에바로머지하지않고, 새로운지역브랜치로만들어작업하려면, $ git checkout -b new-br origin/master -- origin/master 에서새 new-br 브랜치를만들고, 작업브랜치로변경 My Computer origin/master 890ca 98ca9 34ac2 f30ab new-br f99ab master master 에반영하려면, 나중에 new-br 을 master 에머지 24 System Security Lab@Myongji Univ.
3. GitHub 저장소에저장하기 지역저장소의변경사항을원격 (GitHub) 저장소에보내어프로젝트구성원들과공유하려면 git push [remote name] [branch name] $ git push -- 지역저장소의현재브랜치를원격저장소 origin 의같은이름의브랜치에보냄 $ git push origin mybranch -- 지역저장소의 mybranch 를원격저장소 origin 의 mybranch 로보냄 $ git push origin mybranch:master -- 지역저장소의 mybranch 브랜치를원격저장소 origin 저장소의 master 브랜치에보냄 $ git push origin master:new-br -- 지역저장소의 master 브랜치를원격저장소 origin 저장소의 newbr 브랜치에보냄 ( 원격저장소에 new-br 이없으면새로생성함 ) 25 System Security Lab@Myongji Univ.
3. GitHub 저장소에저장하기 원격저장소에 push 하려면쓰기권한이있어야가능 - 로그인이필요할수도 원격저장소를 clone 한이후, 다른팀원이원격저장소에 push 를먼저했다면, 내 push 는안됨. 이경우에는먼저 fetch (pull) 을해서변경내용을지역저장소에서머지한후에 push 할수있음 원격브랜치삭제하기 $ git push remote-name :branch-name 예 ) git push origin :nb1 26 System Security Lab@Myongji Univ.
3. GitHub 저장소에저장하기 앞의 원격브랜치 (4-1) 상태에서 git push 를하면, -- 내 master 브랜치의내용이원격저장소로보내져원격 master 브랜치에저장됨 My Computer origin/master 가 master 위치로이동함 890ca origin/master 98ca9 34ac2 f30ab 7653c f99ab master 27 System Security Lab@Myongji Univ.
4. GitHub 저장소최신내용가져오기 GitHub 저장소에갱신된변경사항을내지역저장소로가져오려면 (GitHub 저장소를지역저장소로복제한이후에, 다른개발자들이변경사항을만들어내고 GitHub 저장소를갱신할수있는데, 이내용을가져와야하는경우 ) $ git fetch -- origin 저장소에서가져오기. 자동으로 merge 하지않음 $ git fetch new_rep -- new_rep 저장소에서가져오기 $ git pull -- origin 저장소에서가져오기. 자동으로 merge 함 28 System Security Lab@Myongji Univ.
5. GitHub 저장소의정보보기 GitHub 저장소의구체적인정보를보려면 $ git remote show origin -- origin 원격저장소의정보를출력 원격저장소의 URL 추적되고있는브랜치 (tracked remote branches) git pull 을하면머지할브랜치 git push 를하면지역저장소의어떤브랜치가원격저장소의어떤브랜치로푸시되는지 29 System Security Lab@Myongji Univ.
5. GitHub 저장소의정보보기 $ git remote show origin -- origin 원격저장소의정보를출력 30 System Security Lab@Myongji Univ.
팀구성하기 31
팀구성하기 1. 각팀의팀장 1 명이 Repository 생성 32 System Security Lab@Myongji Univ.
팀구성하기 2. 팀장이팀원추가 : Settings 클릭 - Settings 33 System Security Lab@Myongji Univ.
팀구성하기 2. 팀원추가 ( 계속 ) - Collaborators - Add 34 System Security Lab@Myongji Univ.
실습 : 2~3 인팀프로젝트 <A 의역할 : 팀장 > 1. 원격저장소생성 2. persona 브랜치생성 3. 첫번째줄입력 4. 원격저장소에 push ( 팀원 B 와 C 의작업종료를기다림 ) 5. 원격저장소 fetch 6. Master 브랜치에 merge 7. 원격저장소에 push A Github 원격저장소 ( 중앙저장소 ) C B 1. 원격저장소 clone 2. personb 브랜치생성 3. 두번째줄입력 4. 원격저장소에 push <C 의역할 > <B 의역할 > 1. 원격저장소 clone 2. B 의 personb 브랜치를가져옴 3. personc 브랜치생성 4. 세번째줄입력 5. 원격저장소에 push 35 System Security Lab@Myongji Univ.
실습 : 2~3 인팀프로젝트 A 1. GitHub 에원격저장소를생성 강의노트앞참조 2. 원격저장소를 clone $ git clone https://github.com/ 조장 ID/ 원격저장소이름 $ cd 원격저장소이름 36 System Security Lab@Myongji Univ.
실습 : 2~3 인팀프로젝트 A 3. team.txt 파일을새로만들고, 첫번째줄에내용을입력 $ vi team.txt team.txt 에첫번째줄입력 $ git add team.txt $ git commit m person A added line No.1 37 System Security Lab@Myongji Univ.
실습 : 2~3 인팀프로젝트 A 4. 원격저장소에 push $ git push https://github.com/ 조장 ID/ 저장소이름 5. github 에서 master 브랜치내용확인 - team.txt 파일이저장되었는지확인 38 System Security Lab@Myongji Univ.
실습 : 2~3 인팀프로젝트 A ( 팀원 B 와 C 의작업이끝나기를기다림 ) 6. 원격저장소의최신내용을가져옴 $ git fetch 7. maser 브랜치에 personc 를머지함 $ git merge origin/personc $ cat team.txt 39 System Security Lab@Myongji Univ.
실습 : 2~3 인팀프로젝트 A 8. master 브랜치를원격저장소 master 브랜치로저장함 (push) $ git push https://github.com/ 조장 ID/ 저장소이름 9. github 에서 master 브랜치내용을확인 40 System Security Lab@Myongji Univ.
실습 : 2~3 인팀프로젝트 B 1. 원격저장소를 clone ( 앞의팀장 A 의 2 번과같은방법으로 ) 2. 다음과같이 personb 브랜치만들고, team.txt 파일의두번째줄추가 $ vi team.txt team.txt 파일을고친내용 41 System Security Lab@Myongji Univ.
실습 : 2~3 인팀프로젝트 B 4. 원격저장소의 personb 브랜치로 push 42 System Security Lab@Myongji Univ.
실습 : 2~3 인팀프로젝트 C 앞의팀원 B 의작업이끝나면, 거의같은방법으로작업함. 1. 원격저장소를 clone 2. 원격저장소의 personb 브랜치를지역브랜치 personc 로생성하고, personc 로 checkout $ git checkout -b personc origin/personb 3. team.txt 파일의세번째줄에추가 ( 파일을 add 하고, 커밋 ) 4. 원격저장소의 personc 브랜치로 push $ git push https://github.com/ 조장 ID/ 저장소이름 personc 43 System Security Lab@Myongji Univ.