코드공유 및 협업 서비스를 위한
git
저장소 호스팅 서비스
GitHub
는 분산 버전 관리 툴인 깃 저장소 호스팅을 지원하는 웹 서비스이다.
GitHub
는 영리적인 서비스와 오픈소스를 위한 무상 서비스를 모두 제공하며 현재 가장 인기있는 git
저장소 호스팅 서비스이다.
즉 GitHub
는 git
으로 관리하는 모든 프로젝트들을 온라인 공간에 공유하여 프로젝트 구성원들이 함께 소프트웨어를 개발할 수 있게 도와주는 서비스이다.
GitHub
계정을 만든 뒤사용하면 PUSH
를 자주하게 될 텐데 2021년 8월 13일 이후 GitHub는 기존 ID/PW 인증을 금지했다.
이는 보안상의 문제로 변경됬으며 이후에는 Personal Access Token(이하 token)
방식의 인증을 사용하고 있다.
Personal access token
을 만드는 방법은 다음과 같다.
- 우측 상단의 프로필 - Settings
- Developer Settings
- Personal access tokens - Generate new token
- repo 및 원하는 기능에 체크, 기간 설정 뒤 Generate token
- 토큰 안전한 곳에 보관
발급받은 토큰을 컴퓨터에 저장하는 방법은 다음과 같다.
- Windows 자격 증명 관리자
- Windows 자격 증명 선택
- git:https://github.com 자격 정보 생성
- 사용자명과 토큰 붙여넣기
git Repository
는 git
으로 관리하는 프로젝트 저장소이다.
Repository
는 공개 범위에 따라 Public
, Private
로 구분할 수 있다.
Public
: 모두에게 보일 수 있는 프로젝트
Private
: 허용된 인원만 볼 수 있는 프로젝트
Repository
를 생성한 뒤 다음과 같은 방법으로 협업할 팀원을 추가한다.
Repository
의 Settings - Collaborators - Add peopleRepository
를 생성한 뒤 다음과 같은 순서로 원격저장소를 추가한다.
git
저장소에 원격 저장소로의 연결 추가 (저장소 이름은 보통 origin
을 사용하지만 다른 이름으로 수정 가능)git remote add origin (원격 저장소 주소)
main
으로 변경 (필수작업은 아니지만 GitHub
권장작업)git branch -M main
git push -u origin main
git remote
GitHub
의 Repository
는 미해당)git remote remove (origin 등 원격 이름)
타인이 만든 원격 저장소의 프로젝트를 다운받는 방법은 크게 2가지가 있다.
Download ZIP
: git
관리내역은 제외하고 파일만 다운git clone
: git
관리내역을 포함하여 다운git clone (원격 저장소 주소)
push
,pull
을 사용하여 로컬과 원격의 커밋을 연결
push
는 로컬의 커밋을 원격으로 밀어올린다.
우선 Leopards.yaml
파일에 Add Evie to Leopards
라는 커밋을 추가해서 확인해보면 다음과 같다.
이후 로컬 저장소의 커밋을 원격 저장소의 커밋으로 push
한다.
git push
이전에 git push -u origin main
명령어로 대상 원격 브랜치가 지정되어 문제 없이 push
가 가능하다.
pull
는 원격의 커밋을 당겨온다.
우선 Leopards.yaml
파일을 원격 저장소에서 Add Dongho to Leopards
라는 커밋을 추가해서 확인해보면 다음과 같다.
이후 원격 저장소의 커밋을 로컬 저장소의 커밋으로 pull
한다.
git pull
원격 저장소에서 가져올 pull
, 원격 저장소에 전달할 push
가 중첩되어 있다면 오류가 발생한다.
즉 push
를 하기전 코드는 원격 저장소에 있는 코드와 동일해야 한다.
현재 원격 저장소에서 먼저 Edit Leopards coach
커밋을 한 뒤 로컬 저장소에서 Edit Leopards manager
커밋을 수행하려 한다.
하지만 로컬 저장소의 코드가 원격 저장소의 코드와 일치하지 않기 때문에 push
를 하면 오류가 발생한다.
발생한 오류를 해결하는 방법은 2가지가 있다.
merge
방식 : 로컬, 원격 저장소의 어긋난 커밋을 한군데로 병합한뒤 push
git pull --no-rebase
rebase
방식 : 로컬, 원격 저장소의 어긋난 커밋을 원격, 로컬의 우선순위로 병합한뒤 push
git pull --rebase
from-local
원격 브랜치 생성 후 명시 및 기본설정git push -u origin from-local
결과를 확인해보면 원격 저장소에 from-local
브랜치가 생성된 것을 확인할 수 있다.
from-local
브랜치의 커밋을 수행하면 는 기존의 main
브랜치는 변화가 없다.
즉 from-local
브랜치는 main
브랜치와는 독립된 별도의 공간이다.
생성된 브랜치를 포함한 목록을 확인하는 방법은 다음과 같다.
git branch --all
원격에서 from-remote
브랜치를 생성한 뒤 로컬에서 확인해보면 생성된 브랜치는 보이지 않는다.
이 때 아래 명령어를 사용하면 원격의 변경사항을 확인할 수 있다.
git fetch
변경사항을 확인한 뒤 아래 명령어로 로컬에 같은 이름의 브랜치를 생성하여 연결한 뒤 switch
한다.
git switch -t origin/from-remote
이후 사용하지 않는 원격의 브랜치는 다음 명령어로 삭제할 수 있다.
git push (원격 이름) --delete (원격의 브랜치명)
fetch
: 원격 저장소의 최신 커밋을 로컬로 가져오기만 한다.
pull
: 원격 저장소의 최신 커밋을 로컬로 가져온 뒤 merge
혹은 rebase
한다.