21
GITHUB 사사사 MADE BY 사사사 (11) 사사사사사 사사사사사사 -FOR CIEN

How to use Github? (For Cien)

  • Upload
    -

  • View
    81

  • Download
    5

Embed Size (px)

Citation preview

Page 1: How to use Github? (For Cien)

GITHUB 사용법MADE BY 김민수 (11) 중앙대학교 컴퓨터공학부

-FOR CIEN

Page 2: How to use Github? (For Cien)

1. 목차

• 1. 목차

• 2. 제작 목적

• 3. GITHUB 가입

• 4. 프로그램 설치 및 사용법

• 4-1. Github For Windows

• 4-2. SorceTree

• 5. 용어 설명

• 6. GITHUB 홈페이지 기능

• 7. 마치며

Page 3: How to use Github? (For Cien)

2. 제작 목적

• 이 문서는 CIEN 신입 회원들이 팀 프로젝트를 원활하게 진행할 수 있도록 가장 기초적인 GitHub 을 사용할 수 있도록 도와준다 .

• 신입 회원이 들어올 때마다 같은 내용을 반복해야 하는 번거로움을 줄이기 위해 문서로 작성하였다 .

• 기획 , 그래픽 , 프로그래밍 팀에 상관없이 모두 사용할 수 있도록 쉬운 말로 제작하려 노력하였다 .

Page 4: How to use Github? (For Cien)

3. GITHUB 홈페이지 가입 (1)

• https://github.com/ 에 접속

• Sign up 버튼 클릭

• Username 은 본명이 아닌 원하는 닉네임을 입력

• Email 은 실제로 많은 정보를 받기 때문에 사용하는 Email 을 적는다 .

• Create an account 클릭

• 기본으로 Free 모드로 선택되어 있다 . Finish sign up 클릭 !

Page 5: How to use Github? (For Cien)

3. GITHUB 홈페이지 가입 (2)

• 우측 상단에 Settings 클릭 – Emails 클릭 – Send verification email 클릭

• 링크를 클릭 후 Confirm 클릭

• 가입 완료 !

Page 6: How to use Github? (For Cien)

4. 프로그램 설치

• GitHub 회원가입을 끝냈으면 팀 프로젝트를 진행하기 위해서 프로그램을 설치해야 한다 .

• 이 문서에서는 대표적인 두 가지 프로그램에 대해 간략하게 설명한다 .

• Github 에서 지원하는 Github For Windows 와 시각화를 가장 잘해둔 SourceTree 이다 .

• 이 진행 과정은 모두 Window 기준이기 때문에 기타 OS 에서는 다를 수도 있다 .

• 브라우저는 모두 CHROME 으로 진행한다 .

Page 7: How to use Github? (For Cien)

4-1 GITHUB FOR WINDOWS (1)

• https://windows.github.com/ 에 접속

• Download GitHub for Windows 클릭

• 설치 후 위에서 가입한 GitHub 닉네임 혹은 E-mail 입력

Page 8: How to use Github? (For Cien)

4-1 GITHUB FOR WINDOWS (2)

• Add ( 기존에 자신이 만들어 둔 프로젝트를 추가 )

• Create ( 새로운 프로젝트를 제작 )

• Clone ( 다른 사람이 올린 프로젝트를 받아옴 )

• 지금은 Create 로 프로젝트를 만들어 보겠다 . ( 현재 새로 만든 아이디는 참여한 (join) 프로젝트가 없기 때문이다 .

만약 가입 후 바로 Cien 이 관리하는 Project 에 참여 (join) 했다면 Clone 으로 받아오도록 한다 .)

• Git ignore 란 ? git 은 기본적으로 남들과 함께 프로젝트를 진행하기 위한 툴이다 . 그렇기 때문에 개인 설정파일이나 특정 언어에서 발생하는 불필요한 파일들은 공유할 필요가 없다 .

(ex. Java 의 class 파일 , unity 의 setting 관련 파일 ,image 의 thumb.db 파일 등 )

이러한 파일들을 자동적으로 공유하지 않도록 해주는 것이 git ignore 이다 . 프로젝트를 만들어 보면 알겠지만

.gitignore 라는 확장자로 파일이 만들어지며

Github For windows 에서는 이를 편하게 자동적으로 만들어 준다 .

Page 9: How to use Github? (For Cien)

4-1 GITHUB FOR WINDOWS (3)• 지금은 unity 로 만들어보겠다 . Unity 를 찾아서 클릭한 뒤 Create Repository 를 누른다 .

• 정말 편리하게도 공유되면 안 되는 파일들은 전부 .gitignore 에 추가되었다 .

• master : 뒤에 설명할 branch 라는 것이다 . 같은 프로젝트를 똑같은 사람이 수정한다면 많은 문제가 발생할 수 있다 . ( 같은 파일을 동시에 수정해서 올린다면 ?) 따라서 branch 즉 가지를 나눠서 작업을 보통 진행한다 .) 처음 기본 branch 는 master 이다 .

• Unsynced changes : 영어를 그대로 해석하면 아직 동기화되지 않은 변화라는 뜻으로 현재 수정한 파일들이 아직 원격으로는 반영이 되지 않았다는 뜻이다 . 즉 , 내가 수정한 파일들을 아직 다른 사람들이 보지 못한다 .

• Publish Repository : 처음 프로젝트를 Create 하면 아직 Github 홈페이지에 이 프로젝트가 올라가지 않은 상태이다 . Publish Repository 를 누르면 Github 에 프로젝트가 등록된다 . 즉 , 다른 사람들이 이 프로젝트를 볼 수 있다 .

• Publish Repository 를 누른 뒤 Desciption( 이 프로젝트에 대한 설명 ) 을 간략하게 적고 Publish TestPro-ject 를 누르면 Github 에 올라간다 .

Page 10: How to use Github? (For Cien)

4-1 GITHUB FOR WINDOWS (4)

• 기본적인 설치 경로는 문서 – GitHub 폴더 이다 .

• 아무 파일이나 하나 추가해보면 혹은 기존의 파일을 수정하면 Uncommitted Changes 가 생긴다 .

• 여기선 Commit Test 라는 txt 파일을 추가해 보았다 .

• Summary 에 지금 수정한 내용들에 대한 포괄적인 요약을 적고 Description 에 상세한 내용을 적어준다 . ( 생략 가능 )

• 커밋할 파일을 체크한 뒤 Commit to master 를 누르면 unsynced changes 가 생긴다 .

• 우측 상단에 Sync 를 누르면 Github 홈페이지에서도 확인이 가능하고 , 다른 상대방들도 자신이 수정한 내용을 열람할 수 있다 . (Commit to Master 만 한 상태에서는 자신만 확인 가능하고 , 다른 사람들은 보지 못한다 .)

Page 11: How to use Github? (For Cien)

4-2 SOURCETREE (1)

• https://www.sourcetreeapp.com/ 에서 SourceTree 를 설치한다 .

• 설치 과정 중 Github 아이디와 암호를 입력하는 단계가 나온다 .

• 언어 설정은 영어를 기준으로 진행한다 . 한글로 보면 오히려 어색한 부분이 많기 때문에 영어로 설정을 바꾼 뒤 진행하는 것을 추천한다 .

• Clone/New 버튼을 클릭한다 ! 그러면 경로를 입력하라는 창을 보게 될 것이다 .

Page 12: How to use Github? (For Cien)

4-2 SOURCETREE (2)• 사진에 보이는 지역을 보면 Clone 을 위한 URL 을 제공한다 . 버튼을 눌러서 주소를 복사한 뒤 적는다 .

• Clone 을 클릭하면 정해진 경로에 해당 프로젝트를 받아온다 .

Page 13: How to use Github? (For Cien)

4-2 SOURCETREE (3)

• 아까 Github For Windows 에서 했던 작업이 그대로 나타난 것을 확인 할 수 있다 .

• SourceTree 에서도 비슷한 방법으로 프로젝트를 만들거나 , 기존의 프로젝트를 불러올 수 도 있다 .

• 하지만 대게 기존에 존재하는 프로젝트를 받아와서 진행하는 경우가 전부이다 .

• 적어도 CIEN 프로젝트를 진행함에 있어서 Clone 이외의 버튼을 누를 일은 적을 것이라고 생각한다 .

• 또 , 새로운 프로젝트를 만드는 과정은 Github For Windows 에서 지원하는 기본 gitignore가 편리하기 때문에 굳이 SourceTree 로 통해 할 필요가 없다 .

• SourcTree 는 GUI 가 잘 되어있고 보기가 좋아 사용하는 툴이다 .

Page 14: How to use Github? (For Cien)

4-2 SOURCETREE (4)• SourceTree 에서 받은 경로를 찾아간 다음에 두번째 파일을 추가해 보았다 . Uncommited

changes 라는 문구가 뜨면서 밑에는 Unstaged Files 에 추가한 파일이 나타난다 .

• Unstaged Files 를 체크하면 자동으로 Staged File 에 올라간다 . 그 뒤 Commit 버튼을 누르고 아래와 같이 Commit 버튼을 누르면 Commit 이 완료된다 .

Page 15: How to use Github? (For Cien)

4-2 SOURCETREE (5)

• Commit 이 완료되면 Push 에 1 이라는 숫자가 적혀있는 것을 확인할 수 있다 . 이는 아직 다른 사람들이 수정 내역을 볼 수 없다는 뜻이다 .

• Push 를 눌러서 OK 를 눌러준다 .

• GitHub For Windows 에서도 변경 내역이 같이 보이는 것을 확인할 수 있다 .

( 우측 상단의 Sync 버튼을 눌러야 최신내용으로 나타난다 .)

Page 16: How to use Github? (For Cien)

5. 용어 설명• Commit: 기존의 파일을 변경하거나 새로운 파일의 추가 등의 변화를 가한 뒤 자신의 로컬 저장소에 올리는 것을 의미한다 . 로컬 즉 , 자신의 컴퓨터에서만 볼 수 있기

때문에 다른 사람은 확인할 수가 없다 .

• Push: Commit을 통하여 로컬 저장소에 올린 변경 내용들을 다른 사람들이 볼 수 있도록 원격 저장소에 올리는 것을 의미한다 .

• Fetch: 다른 사람이 Push한 것은 실시간으로 반영되지 않는다 . 다른 사람이 Push한 것을 확인하기 위해선 수시로 Fetch를 해준다 . Fetch는 원격저장소의 변경 내용을 자신의 로컬 저장소로 가져온다 .

• Pull: Fetch를 하면 최신 변경 내용들이 반영된다 . 만약 자신이 작업하고 있는 환경에서 직접 변경 내용을 적용시키고 싶다면 Pull을 해준다 . (Fetch는 변경 내용이 있다는 것을 알려주는 것이지 , 지금 자신이 작업하고 있는 환경을 변화시키는 것을 의미하지 않는다 .)

• Sync: Github For Windows에서 사용하는 용어로 Push, Fetch 처럼 로컬 저장소와 원격 저장소 사이의 동기화하는 작업을 통 틀어서 의미한다 . (Push+Fetch)

• Publish: Project를 원격저장소에 올리는 작업을 Publish라 한다 . (Github For windows에서 사용)

• Branch: branch란 , 예를 들어 같은 프로젝트 안에서 서로 맡은 일에 따라 진행하다가 만약 같은 파일을 수정하게 된다면 push할 때 충돌이 발생하게 된다 . 이를 방지하기 위해 branch라는 자신만의 공간을 만들어서 다른 사람과 당장은 충돌이 발생하지 않도록 하는 수단이다 .

• Merge: branch를 각자 나누어서 작업을 했다면 , 서로 일이 다 끝났을 때는 합쳐야 하나의 프로젝트로 적용이 될 것이다 . 서로 겹치는 부분에 대한 충돌을 체크하고 , 하나로 합치는 과정을 Merge라 한다 .

• CheckOut: 다른 사람의 Branch를 보고 싶을 때 , 그 branch를 받아 오는 것을 checkout이라 한다 .

• Revert: GitHub For windows에서 사용하는 용어로 , 현재 보고 있는 Commit(Push)내용의 변화를 전부 되돌리고(그 전 단계로) 그것을 하나의 커밋으로 올린다 .

Page 17: How to use Github? (For Cien)

6. GITHUB 홈페이지 기능 (1)

• 우측을 보면 Code, Issues, Pull requests, Wiki, Pulse, Graphs , Settings 가 있다 .

• Code 는 현재 보이는 화면으로 현재 기본 branch 로 master 가 선택되어있음을 알 수 있고 ( 즉 , 기본 branch 는 변경 가능하다 ) 현재까지 이 branch 의 commit 개수가 5개이며 , branch 의 총 개수가 1 개라는 것을 알려준다 . Release 는 이 프로젝트의 배포 단계를 말하는 것으로 제대로 작동하게 해둔 프로젝트를 지정해준다 . (예를 들어 게임에서 v0.1, v0.2, v1.0 등으로 단계별로 올려나면서 패치하는 것 (릴리즈 하는 것 ) 을 의미한다 .)

• Contributors 는 이 프로젝트에 참여한 사람의 수를 의미한다 .

• Contributors 를 클릭하면 자동으로 Graphs 화면으로 넘어간다 .

Page 18: How to use Github? (For Cien)

6. GITHUB 홈페이지 기능 (2)

• Issues를 클릭하면 Issues창이 뜬다 .

• 예를 들어 개발자1은 전투 로직를 개발하고 , 개발자2는 이벤트를 개발하고 , 개발자3는 UI를 개발하기로 하였다 하면 , 이 Issue를 지정하여 각자 맡은 일이 무엇인지를 정해둘 수 있다 . 즉 , 다른 사람이 같은 일을 겹치게 하지 않도록 방지하는 역할을 할 수 있다 .

• New Issue를 클릭하면 나오는 화면이다 .

• Labels는 이 일이 어떤 종류인지를 정한다 . 예를 들자면 어떤 로직에서 벅그가 발생하여 그 버그를 수정해야 하는 일이라면 labels은 bug fix가 될 것이다 . 이 labels은 임의로 추가 및 수정이 가능하다 .

• Milestone은 이 일이 어떤 버전에 해당하는 일인지를 할당한다 . 예를 들어 v0.2에서 끝냈어야 할 로직에서 문제가 발생했다면 이 이슈는 v0.2가 될 것이다 . Milestone은 역시 임의로 추가 수정이 가능하다 .

• Assignee는 누가 이 일을 할지에 대한 지정이다 . Issue를 관리하는 팀장이 이슈를 만들고 각자 할 일을 부여하는 것이다 .

• Issue를 완료 했다면 Close Issue를 누르면 Closed issue로 넘어가면서 Issue가 닫아진다 . 나중에 다시 열 수도 있다 .

Page 19: How to use Github? (For Cien)

6. GITHUB 홈페이지 기능 (3)

• Pull Request 는 줄여서 PR 이라고 사용한다 .

• 각 Repository 마다 참여자를 지정할 수 있다 . 하지만 만약 참여자로 지정되지 않아 권한이 없다고 해도 그 프로젝트에 참여할 수 있다 .

• 그 방법이 PR 로 수정한 파일들을 바로 Push 하는 것이 아니라 PR 을 통해 이렇게 이렇게 수정해서 더 개선하였으니 적용시켜 주십시오 라는 요청을 보내는 것이다 .

• CIEN 프로젝트에서는 참여자들은 전부 권한을 가지고 있기 때문에 또 사전에 미리 이야기를 진행하기 때문에 아직까진 사용하지 않는 기능이지만 , 사실 PR 을 통해 미리 코드를 읽어 보고 고쳐야 할 점을 서로 지적한 다음에 완벽한 코드로써 프로젝트에 적용시킨다는 점에서 언젠가 활용해야 할 기능 중 하나이다 .

Page 20: How to use Github? (For Cien)

6. GITHUB 홈페이지 기능 (4)

• Wiki 는 흔히 아는 그 Wiki 가 맞다 . 다른 사람들이 이 프로젝트의 진행 상황이나 어떤 프로젝트인지를 알고 싶으면 이 문서를 참고하면 된다 .

• 사용할지 안 할지는 자유이나 , CIEN 에서는 따로 Wiki 를 운영하고 있기 때문에 굳이 Github 에서 지원하는 Wiki 를 사용할 필요는 없어 보인다 . 하지만 , 다른 프로젝트를 참고해야 할 일이 있을 때 잘 정리되어있는 문서를 보면서 매우 만족하는 경우도 많다 .

• Pulse 나 Graph 의 경우 이 프로젝트가 활발하게 진행되고 있는지 , 누가 참여를 하고 있는지 , 얼마나 열심히 하는지 등을 볼 수 있도록 분석해주는 페이지 이다 . 가장 Commit을 많이 한 사람 , 4월에 가장 많이 한 사람 등을 가려낼 수 있기 때문에 누가 놀면서 일을 안하고 있다면 응징의 철퇴를 내릴 수 있다 .

Page 21: How to use Github? (For Cien)

7. 마치며

• 기본적으로 프로젝트에 참여할 수 있도록 기능들을 적어놨다 .

• 하지만 아직 좀 더 실용적인 기술들이 남아있다 . ( 커밋을 실수로 했을때 ?, 커밋 여러 개를 한 번에 합쳐서 올리고 싶을 때 ?, Merge 할 때 충돌에 대한 쉬운 해결법 ?, Fork 란 ?, Rebase 란 ? 등등 ..)

• 이러한 기술들은 다음 Git 발표에서 다루도록 하겠다 .

• 모두들 방학에 꼭 프로젝트를 완성시킬 수 있으면 좋겠다 .