GitHub와 로컬 PC를 연결하고
코드를 올리고(push), 내리고(pull/clone),
처음으로 GitHub에 업로드하는 과정을 실습하며 정리한다.
이 문서 하나만 보면 다음을 다시 할 수 있도록 한다.
- GitHub 최초 업로드
- GitHub에서 프로젝트 내려받기(clone)
- push / pull 기본 흐름
- 중첩 저장소(.git 두 개) 방지
- master / main 브랜치 꼬임 해결
- Windows
- VS Code
- GitHub 개인 계정
이미 내 컴퓨터에 프로젝트 폴더가 있고,
이걸 처음으로 GitHub repository에 올릴 때 사용하는 방법
이 방법은 git clone과 다르다.
git clone: GitHub → 내 컴퓨터- 이 섹션 : 내 컴퓨터 → GitHub
git init- 현재 폴더를 Git 저장소로 만든다
.git폴더가 생성된다
git add ..(점)은 모든 파일을 의미한다- 특정 파일만 추가하고 싶다면:
git add index.htmlgit status- 어떤 파일이 staging 상태인지 확인 가능
git commit -m "first commit"-m은 message의 약자"first commit"은 예시일 뿐, 아무 메시지나 가능
git remote add origin https://github.com/hoorak17/vacation-practice.gitgit remote -v- 연결된 GitHub 주소가 출력되면 성공
git push origin main아직 내 컴퓨터에 프로젝트가 없을 때만 사용
- Desktop
- repos 폴더
- 아직 Git이 아닌 폴더
git clone https://github.com/hoorak17/vacation-practice.git- 동일한 이름의 폴더가 생성된다
.git폴더가 자동으로 생성된다- GitHub(origin)가 자동으로 연결된다
이미 .git이 있는 폴더에서 실행하면 중첩 저장소가 생긴다
이미 GitHub와 연결된 프로젝트에서 변경 사항 업로드
git add .
git commit -m "커밋 메시지"
git push이미 연결된 프로젝트에서 최신 변경 사항 가져오기
git pull[master a9af0fd] 커밋 메시지
원인:
- 로컬 브랜치가
master - 원격 기본 브랜치는
main
해결 (정석):
git branch -m master main
git push -u origin main! [rejected] main -> main (fetch first)
의미:
- 원격
origin/main에 - 로컬에 없는 커밋(README, initial commit 등)이 있음
git push -u origin main --force- 원격 main을 로컬 기준으로 덮어쓴다
git pull --rebase origin main
git push -u origin main의미:
- 원격 master는 삭제됨
- 로컬 master 브랜치는 아직 존재
확인:
git branch해결:
git branch -m master main
git push -u origin main# 로컬 master 삭제
git branch -D master
# 원격 master 삭제
git push origin --delete master- PR은 허가 요청이 아니다
- GitHub가 브랜치 병합을 도와주는 화면
- 개인 실습 repo에서는 무시해도 된다
git branch -M main
git push -u origin main- repo 하위 폴더에서 다시
git init또는git clone실행 시 발생 - 프로젝트당
.git은 하나만 존재해야 한다
git branch # * main 인지 확인
git remote -v # origin 정상 연결 확인
git status
git push- 커밋은 항상 main
- fetch first → force push 가능(연습 repo)
- master/main 꼬이면 → 브랜치 이름부터 통일