낙서장이자 오답 노트이자 컨닝 페이퍼
Git을 공부해보자: GitHub 사용하기 본문
인프런에서 "제대로 파는 Git & GitHub - by 얄코"를 보고 정리한 내용입니다!
GitHub이란?
GitHub은 Git으로 관리하는 모든 프로젝트들을 온라인 공간에 공유해서 프로젝트 구성원들이 함께 소프트웨어를 만들어낼 수 있도록 도와주는 코드 공유 및 협업 서비스
GitHub를 왜 쓸까?
Github가 중간에서 교통정리를 해줌으로써 서로의 작업을 덮어씌울 걱정 없이 마음 편하게 협업을 할 수 있게 해 준다.
- GitHub 등의 온라인 Git 저장소는 모든 업로드와 다운로드를 커밋 단위로 주고받는다.
- 커밋을 해서 버전을 만들고 업로드를 하면 GitHub상의 프로젝트는 해당 버전으로 최신화가 된다.
- 먼저 공유된 최신 버전으로 자기 프로젝트를 업데이트하고 나서야 GitHub에다 작업물을 업로드할 수 있다.
원격 저장소 사용하기
로컬에 원격 저장소 추가 후 푸시
1. access 토큰 발급
2. 토큰 컴퓨터에 저장하기
- Windows 자격 증명 관리자
- Windows 자격 증명 선택
- git:https://github.com 자격 정보 생성
- 사용자명과 토큰 붙여 넣기
3. 깃헙에 레포 생성
4. 로컬이 이미 존재하는 경우 명령어 붙여 넣기(토큰 발급받고 저장 필요)
git remote add origin (원격 저장소 주소)
- 로컬의 Git 저장소에 원격 저장소로의 연결 추가
- 원격 저장소 이름에 흔히 origin 사용 (다른 것으로 수정 가능)
git branch -M main
- GitHub 권장 - 기본 브랜치명을 main으로 변경
git push -u origin main
- 로컬 저장소의 커밋 내역을 origin 원격 저장소의 main 브랜치로 push
- -u 또는 --set-upstream: 현재 브랜치와 명시된 원격 브랜치(여기서는 origin main)를 디폴트로 연결
- 디폴트로 연결되었기 때문에 이후로는 main(현재 브랜치)에서 git push만 입력하면 origin main로 push 된다.
원격 목록 보기
git remote
자세히 보기: git remote -v
원격 지우기
로컬 프로젝트와의 연결만 없애는 것. GitHub의 레포지토리는 지워지지 않음
git remote remove (origin 등 원격 이름)
GitHub에서 프로젝트 다운받기
- Download ZIP: 파일들만 다운받음, Git 관리내역 제외
- Git clone: Git 관리내역 포함 다운로드
git clone (원격 저장소 주소)
push와 pull
push
원격으로 커밋을 밀어 올린다.
1. 변경 사항 저장 후, 커밋

2. 로컬의 변화를 원격 저장소에 push
git push
- 이미 git push -u origin main으로 디폴트 원격 브랜치가 지정되었기 때문에 git push만으로 원격에 올릴 수 있다.

pull
원격의 커밋을 당겨온다.
1. 레포에 변경 사항 발생
2. 원경 저장소의 변경 사항을 pull
git pull

pull 할 것이 있을 때 push
push 하면?
이런 상황에서 push를 하면 아래와 같이 에러가 발생한다.

- 원격에 먼저 적용된 새 버전이 있으므로 적용 불가
- pull 해서 원격의 버전을 받아온 다음 push 가능
push 할 것이 있을 시 pull 하는 두 가지 방법
push 하기 전에 아래 방식으로 싱크를 맞춘 후, push 한다.
merge 방식
git pull --no-rebase
- 로컬의 main 브랜치와 원격의 main 브랜치가 갈라진 후, 분기된 히스토리가 한 지점에서 자동으로 병합
- 충돌 해결은 로컬 처리 방법과 같음

rebase 방식
git pull --rebase
- 로컬의 변경사항이 원격의 변경 사항 이후에 붙여짐
- pull 상의 rebase는 협업 시 사용 OK
- 충돌 해결은 로컬 처리 방법과 같음(git rebase --continue 필요한 경우 있음)

로컬의 내역 강제 push
원격에 올라가 있는 내용들이 잘못돼서 로컬에 있는 것들로 강제로 맞춰줘야 하는 경우, 아래 명령어로 원격에 강제 적용한다. 협업 상황에서 혼자서 써버리면 앞으로 일 못한다.
git push --force
원격의 브랜치 다루기
로컬 브랜치 만들어서 원격에 push
1. 로컬 브랜치 생성
2. 아래 명령어로 원격에 push
git push를 사용하면 대상을 명시하라는 메시지 나타남
git push

아래 명령어로 브랜치 명시 및 기본 설정
git push -u origin from-local
3. 브랜치 목록 보기
로컬과 원격의 브랜치 확인
git branch --all

원격의 브랜치 로컬에 받아오기
1. 깃헙에 새로운 브랜치 생성
- git branch -a에서 현재는 보이지 않음

2. 아래 명령어로 원격의 변경사항 확인
git fetch
- git branch -a로 확인 가능

3. 아래 명령어로 로컬에 같은 이름의 브랜치를 생성하여 연결하고 switch
git switch -t origin/from-remote

원격의 브랜치 삭제
git push (원격 이름) --delete (원격의 브랜치명)
fetch vs pull
- fetch: 원격 저장소의 최신 커밋을 로컬로(익명의 브랜치로) 가져오기만 함
- pull: 원격 저장소의 최신 커밋을 로컬로 가져와 merge 또는 rebase (fetch동작 포함하는 개념)
원격의 새 커밋 확인
- 원격의 main 브랜치에 커밋 추가
- git checkout origin/main으로 확인(아직 변경 사항 없음)
- 원격의 변경사항 fetch
- git checkout origin/main으로 확인(원격에 있는 내용을 미리 fetch 해서 checkout으로 확인)
- git pull(default: merge)로 적용
원격의 새 브랜치 확인
- 원격에 새 브랜치 추가
- fetch로 새 브랜치 로컬로 가져옴
- git checkout origin/new-branch로 미리 확인
- git switch -t origin/new-branch로 로컬에 새 브랜치 받아오기(-t는 push의 -u와 같아서 커밋을 주고받을 수 있음)
'git & github' 카테고리의 다른 글
| Git을 공부해보자: HEAD (0) | 2023.11.20 |
|---|---|
| Git을 공부해보자: Git의 3가지 공간 & add, commit 취소하기 (0) | 2023.11.16 |
| Git을 공부해보자: Git으로 차원 넘나들기 (0) | 2023.11.15 |
| Git을 공부해보자: Git으로 시간 여행하기 (0) | 2023.11.14 |
| Git을 공부해보자: Git 시작하기 (0) | 2023.11.14 |