(git & GitHub) Get started with GitHub

Mirrer·2022년 5월 7일
0

git & GitHub

목록 보기
4/15
post-thumbnail

GitHub란?

코드공유 및 협업 서비스를 위한 git 저장소 호스팅 서비스

GitHub는 분산 버전 관리 툴인 깃 저장소 호스팅을 지원하는 웹 서비스이다.

GitHub는 영리적인 서비스와 오픈소스를 위한 무상 서비스를 모두 제공하며 현재 가장 인기있는 git 저장소 호스팅 서비스이다.

GitHubgit으로 관리하는 모든 프로젝트들을 온라인 공간에 공유하여 프로젝트 구성원들이 함께 소프트웨어를 개발할 수 있게 도와주는 서비스이다.


GitHub 생성

Personal Access Token

GitHub계정을 만든 뒤사용하면 PUSH를 자주하게 될 텐데 2021년 8월 13일 이후 GitHub는 기존 ID/PW 인증을 금지했다.

이는 보안상의 문제로 변경됬으며 이후에는 Personal Access Token(이하 token) 방식의 인증을 사용하고 있다.


Personal access token을 만드는 방법은 다음과 같다.

  1. 우측 상단의 프로필 - Settings
  2. Developer Settings
  3. Personal access tokens - Generate new token
  4. repo 및 원하는 기능에 체크, 기간 설정 뒤 Generate token
  5. 토큰 안전한 곳에 보관

발급받은 토큰을 컴퓨터에 저장하는 방법은 다음과 같다.

  1. Windows 자격 증명 관리자
  2. Windows 자격 증명 선택
  3. git:https://github.com 자격 정보 생성
  4. 사용자명과 토큰 붙여넣기

Repository 생성

git Repositorygit으로 관리하는 프로젝트 저장소이다.

Repository는 공개 범위에 따라 Public, Private로 구분할 수 있다.

  • Public : 모두에게 보일 수 있는 프로젝트

  • Private : 허용된 인원만 볼 수 있는 프로젝트

Repository를 생성한 뒤 다음과 같은 방법으로 협업할 팀원을 추가한다.

  • RepositorySettings - Collaborators - Add people

GitHub 사용

원격 저장소 추가

Repository를 생성한 뒤 다음과 같은 순서로 원격저장소를 추가한다.


  1. 로컬의 git 저장소에 원격 저장소로의 연결 추가 (저장소 이름은 보통 origin을 사용하지만 다른 이름으로 수정 가능)
git remote add origin (원격 저장소 주소) 
  1. 기본 브랜치명을 main으로 변경 (필수작업은 아니지만 GitHub 권장작업)
git branch -M main
  1. 로컬 저장소의 커밋 내역들을 원격으로 push(업로드)
git push -u origin main
  1. 원격 목록 확인
git remote
  1. 로컬 프로젝트의 연결 삭제 (GitHubRepository는 미해당)
git remote remove (origin 등 원격 이름)

원격 저장소 프로젝트 다운

타인이 만든 원격 저장소의 프로젝트를 다운받는 방법은 크게 2가지가 있다.

  • Download ZIP : git 관리내역은 제외하고 파일만 다운

  • git clone : git 관리내역을 포함하여 다운
git clone (원격 저장소 주소)

push & pull

push, pull을 사용하여 로컬과 원격의 커밋을 연결

push

push는 로컬의 커밋을 원격으로 밀어올린다.

우선 Leopards.yaml파일에 Add Evie to Leopards라는 커밋을 추가해서 확인해보면 다음과 같다.

이후 로컬 저장소의 커밋을 원격 저장소의 커밋으로 push한다.

git push

이전에 git push -u origin main명령어로 대상 원격 브랜치가 지정되어 문제 없이 push가 가능하다.


pull

pull는 원격의 커밋을 당겨온다.

우선 Leopards.yaml파일을 원격 저장소에서 Add Dongho to Leopards라는 커밋을 추가해서 확인해보면 다음과 같다.

이후 원격 저장소의 커밋을 로컬 저장소의 커밋으로 pull한다.

git pull


push 중복

원격 저장소에서 가져올 pull, 원격 저장소에 전달할 push중첩되어 있다면 오류가 발생한다.

push를 하기전 코드는 원격 저장소에 있는 코드와 동일해야 한다.

현재 원격 저장소에서 먼저 Edit Leopards coach커밋을 한 뒤 로컬 저장소에서 Edit Leopards manager커밋을 수행하려 한다.

하지만 로컬 저장소의 코드가 원격 저장소의 코드와 일치하지 않기 때문에 push를 하면 오류가 발생한다.

발생한 오류를 해결하는 방법은 2가지가 있다.

  • merge 방식 : 로컬, 원격 저장소의 어긋난 커밋을 한군데로 병합한뒤 push
git pull --no-rebase

  • rebase 방식 : 로컬, 원격 저장소의 어긋난 커밋을 원격, 로컬의 우선순위로 병합한뒤 push
git pull --rebase


원격의 Branch

로컬에서 브랜치 생성

  • 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의 차이점

  • fetch : 원격 저장소의 최신 커밋을 로컬로 가져오기만 한다.

  • pull : 원격 저장소의 최신 커밋을 로컬로 가져온 뒤 merge 혹은 rebase한다.


참고 자료

Book - Git
깃 끝판왕 강좌 제대로 파는 Git & GitHub - 얄팍한 코딩사전 Youtube

profile
memories Of A front-end web developer

0개의 댓글