- 협업 도구로써 Git의 가장 큰 유용함은 원격 저장소(Remote repository)기능이며,
GitHub는 Git 기반의 원격 저장소 기능을 제공하는 프로젝트 종합 관리 서비스임
* GitHub Guide (URL)
원격 저장소
Remote Repository
- 외부에서 접속해 사용하는 Git 프로젝트 저장소
GitHub가 제공하는 주요 기능
- Fork : 다른 사람의 저장소를 복사하는 기능, 개인 사용자들은 서로의 원격 저장소를 읽고 쓸 수 있음
- Pull Request : Fork한 저장소를 수정해 다시 원본 저장소에 병합해달라는 요청을 보내 사용자 사이의 상호작용을 일으키게 하는 기능
- Issue : 저장소 안에서 사용자들 사이의 문제를 논의하는 기능
- Wiki : 저장소와 관련된 체계적인 기록을 남기는 기능
원격 저장소 생성
Create Remote Repository
1. New repository 버튼 클릭
- GitHub 대시보드 화면에서 "New repository" 선택
2. repository 정보 기입
- Owner : 사용자 아이디가 표시되는 공간, 협업 환경에서는 다른 사용자의 아이디를 지정할 수도 있음
- Repository name : 생성할 원격 저장소의 이름, 가급적 로컬 환경에서 작업할 Git 프로젝트 디렉터리 이름과 일치시키는것이 권장됨
- Description : 생성한 원격 저장소를 간략이 설명하는 공간 (선택적으로 기입)
- Public/Private : 원격 저장소의 공개 여부를 선택하는 옵션
- Initialize this repository with a README : GitHub에서 생성한 원격 저장소를 바로 로컬 저장소에 복사해서 가져올 수 있게하는 기능, 또한 '저장소 이름' 과 'Description' 항목의 내용을 담은 README.md 파일을 생성함
- Add.gitignore : 원격 저장소에 포함하지 않을 파일들의 목록을 만들 때 사용하는 옵션 (Git Ignore 기능과 유사)
- Add a license : 원격 저장소에 저장할 프로젝트가 어떤 라이센스에 속할 지를 선택하는 옵션
* Open Source License 의 종류 (URL)
3. repository 완성
- 성공적으로 완성된 repository의 모습
Fork
- 다른 사람의 원격 저장소를 내 계정으로 복사하여 저장소를 생성하는 방법
* 본래 "Fork"의 의미 : 현재 프로세스를 나눠서 새로운 프로세스를 만드는 것임
Fork 기능을 통한 repository 생성방법
Ex. Poen Source Project : jQuery 를 Fork 하여 생성
1. 포크할 저장소를 검색
- GitHub 검색창에 "jQuery" 검색
2. 포크할 저장소에 접근
- 포크할 저장소를 클릭
3. 포크
- 저장소 페이지에서 "Fork" 클릭
- Fork 처리중 화면으로 바뀌면서 수 초에서 수 분 내에 Fork가 완료됨
4. 내 저장소 확인
- 본인의 저장소에 접근하여 포크가 정상적으로 이루어졌는지 확인
5. 포크 완료
- 포크한 jQuery 저장소의 원본 저장소는 아무나 사용할 수 없는 원격 저장소이지만,
포크함으로써 내 저장소로 복사해온 이후부턴 자유롭게 jQuery 저장소를 제어할 수 있게됨
GitHub repository 의 세부기능
포크한 저장소와 직접 생성한 저장소의 차이
Watch - Star - Fork
- Watch : 클릭하면 원격 저장소의 활동 내역을 사용자에게 알려주는 기능을 제공, 세 가지의 세부기능을 제공
- Not Watching : 댓글이나 이슈 등에서 언급될 때만 알려줌
- Watching : 모든 활동 내역을 알려줌
- Ignoring : 모든 알림을 무시함
- Star : 해당 원격 저장소에 관심을 표하는 기능
- Fork : 자세한 설명은 생략한다.
저장소 정보
- Description : 원격 저장소를 설명하는 메세지, 각 정보들의 상단에 위치
- Commits : 원격 저장소의 총 커밋 수
- Branches : 원격 저장소의 총 브랜치 수
- Releases : 원격 저장소의 tag 수, 특정 버전에 표식을 주고자 할 때 사용, 표식을 통해 특정 버전을 다운로드 가능
- Contributor : 원격 저장소에 커밋 or 풀 리퀘스트가 받아들여진 사용자 수, 오픈 소스의 경우 해당 오픈 소스에 기여한 사람의 수
- License : 해당 프로젝트가 따르는 OpenSource License의 종류
브랜치 메뉴
- Current branch - ① : 원하는 브랜치를 선택하는 기능, 해당 브랜치로 Check out 하는 기능
- New pull request : 현재 선택된 브랜치를 pull request 하는 기능
- Create new file : 새로운 디렉터리를 생성하는 기능
- Upload files : 외부 파일을 repository에 업로드하는 기능
- Find file : repository에서 특정 파일을 검색하는 기능
- Clone or download
- HTTPS clone URL : repository를 clone할 때 사용하는 주소 정보 (HTTPS, SSH, 서브버전에 맞는 주소로 변경가능)
- Open in Desktop : GitHub 전용 클라이언트 프로그램을 사용하여 clone 할 때 사용하는 기능
- Download ZIP : repository 전체 파일을 압축 파일 형태로 다운로드하는 기능
* Current Branch
* Clone
저장소 메뉴
- Code : 해당 repository의 Root Directory 로 이동하는 기능
- Pull requests : Pull request 전체 목록을 모아서 보여주는 기능. 댓글로 의견을 주고받을 수 있고, 우측에 숫자는 풀 리퀘스트에 관한 discussion의 개수임
- Projects : 프로젝트를 작성하는 기능
- Wiki : 공유할 정보나 개발 문서, 참고 자료 등을 작성하는 기능. 마크다운과 위키위키 문법을 사용함
- Insights : 해당 repository에 관한 통계자료를 보여주는 기능
- Settings (Owner) : 해당 repository의 각종 설정을 변경하는 기능
* Insights 기능
- Pulse : 해당 repository의 최근 변경 내역 (Pull request가 반영된 횟수, 발생한Issue 와 해결된 Issue의 개수 등
GitHub repository 의 특징
공개 원격 저장소 (Public Repository)
- 저장소 관리자, 협업자(Collaborator) 이외에는 쓰기 권한이 없음
- GitHub 사용자라면 누구나 읽기 권한과 포크 권한이 있음
- GitHub 사용자 누구에게든 소유권을 이전할 수 있음
비공개 원격 저장소 (Private Repository)
- 관리자가 지정한 협업자만 접근해서 다룰 수 있음
- 지정한 협업자에게만 포크 기능이 허용됨
- 유료 사용자에게만 소유권을 이전할 수 있음
GitHub repository 사용자별 권한
저장소 관리자 (Owner)
- 원격 저장소 읽기 및 쓰기 가능, 협업자 초대, 소유권 이전 가능
* 소유권 이전 시, 저장소 관리자는 공헌자(Contributor)가 됨
협업자 (Collaborator)
- 원격 저장소 읽기 및 쓰기 가능
일반 사용자
- 원격 저장소 읽기 가능
- 쓰기 권한이 없어서 Fork를 통해 작업해야 함