본문 바로가기

개발계발

KDT 유비온 코딩 강의 13일차 [깃허브 푸시하기]

KDT 유비온 코딩 강의 13일차 | 깃허브 푸시하기
KDT 국비 강의 재직자 전형으로 신청 후 작성하는 기록지입니다!

지난 글은 아래 링크에서 확인 가능합니다!
👉 https://ganzhotpot.tistory.com/29

 

 

📌 도입

오늘은 로컬에서 만든 웹 명함을 실제로 GitHub에 올려서
다른 사람도 볼 수 있도록 서버에 업로드하는 작업을 진행했어요!

오늘 다룬 주요 내용은 세 가지였어요.

• 로컬에서 만든 웹 명함을 GitHub에 업로드(Push) 하는 절차
• 서버에 업로드해야 하는 이유 이해
• 클라이언트-서버 모델 복습 및 적용

 

 

⚙️ STEP 1. GitHub 업로드 전 기본 설정

웹 프로필 코드를 깃허브에 업로드하려면, 로컬 저장소를 깃허브 원격 저장소에 연결하고 푸시하는 과정이 필요하다고 합니다.
(제대로 배운 게 맞는지 긴가민가 하지만.. 😅)

커밋을 완료한 상태라면 원격 저장소 생성 → 연결 → 푸시 → 이후 관리 단계가 필요하다고 해요.

현재 VSCode에 글로벌로 설정해뒀어서 터미널에서 아래 과정으로 설정해줬습니다!

git config user.name "이름"
git config user.email "깃허브 메일주소"

아무런 에러 없이 완료된 것을 확인했어요!

 

🔗 STEP 2. 원격 저장소 연결 및 푸시

강의 내용처럼 VSCode에서 푸시하는 과정이 잘 되지 않아서,
터미널을 통해 아래 명령어로 연결을 진행했어요.

git remote add origin https://github.com/개인깃 주소
git branch -M main
git push -u origin main

 

그렇게 해서 웹에서 연결을 진행하고 나서 깃허브에 커밋된 내역을 확인할 수 있었어요!

 

 

🚨 STEP 3. 에러 발생 1 - Detached HEAD 상태

깃허브에 커밋까지는 했는데 푸시에서 에러가 났었는데요 ㅠ.ㅠ
이 에러를 클로드를 통해서 해결했습니다!

 

 

에러 원인은 Detached HEAD 상태였어요.
현재 Git이 특정 브랜치가 아닌 특정 커밋에 직접 체크아웃된 상태로,
브랜치 없이 떠 있는 상태라 git push -u origin이 실패한 것이었어요.

주로 git checkout <커밋해시> 또는 태그로 체크아웃했을 때 발생하며,
브랜치명이 아닌 HEAD가 커밋을 직접 가리키는 상태일 때 생기는 문제예요.

해결 방법으로 현재 상태를 새 브랜치로 만들어 푸시하는 방법을 클로드에게 추천받아 아래 명령어로 해결했습니다!

git checkout -b <새브랜치명>
git push -u origin <새브랜치명>

 

 

🚨 STEP 4. 에러 발생 2 - non-fast-forward 충돌

그런데 또 다른 에러가 기다리고 있었어요 😭

non-fast-forward 충돌 상태로, 로컬 커밋이 원격(GitHub) main 브랜치보다 뒤처져 있어서 push가 거절된 상태였어요.
원격에 로컬에 없는 커밋이 존재하는 상황이었던 거예요.

해결 방법은 원격 변경사항 합치기(안전, 권장) 방식으로 진행했어요.

git pull origin main --allow-unrelated-histories
# 충돌 없으면 바로:
git push origin HEAD:main

 

 

VSCode 터미널에서 적용했더니 Merge 커밋 메시지 입력 대기 중인 상태가 됐어요.
git pull로 merge가 시작됐고, merge 커밋 메시지를 확정하는 vim 편집기가 열린 상태였는데요.

vim 편집기 저장 방법은 이렇습니다.

1. 터미널 클릭 후 ESC 키 누르기
2. :wq 입력 후 Enter
3. 기본 메시지 그대로 저장하고 merge 완료

그 다음 git push origin HEAD:main 실행이 완료되면

 

정상적으로 깃허브 푸시가 완료되었습니다! 🥳

와.. 이거 해결하려고 너무 시간이 들어갔지만, 그래도 어찌저찌 잘 찾아서 해결되어서 완전 다행입니다 ㅠ.ㅠ
에러가 발생했을 때 당황하지 않고 AI에게 물어보면서 하나씩 해결해 나가는 게 바이브 코딩의 핵심이라는 걸 오늘 몸소 느꼈어요!

 

 

 

📖 모르는 단어 찾아보기

오늘도 새로운 단어들이 나왔어요. 찾아보고 정리해봤습니다!

[Push (푸시)]
로컬 저장소에 저장된 커밋 내역을 GitHub 같은 원격 저장소에 업로드하는 명령어예요.

[Remote (원격 저장소)]
GitHub처럼 인터넷 상에 있는 Git 저장소예요. 로컬 저장소와 연결해서 코드를 주고받을 수 있어요.

[Detached HEAD]
Git이 특정 브랜치가 아닌 특정 커밋을 직접 가리키는 상태예요. 이 상태에서는 push가 되지 않아요.

[non-fast-forward]
로컬 브랜치가 원격 브랜치보다 뒤처져 있을 때 발생하는 충돌이에요. git pull로 먼저 최신 상태를 받아온 후 push해야 해요.

[git pull]
원격 저장소의 최신 내용을 로컬로 가져오는 명령어예요. fetch + merge가 합쳐진 동작이에요.

[Merge (머지)]
두 개의 브랜치나 커밋 이력을 하나로 합치는 작업이에요.

[vim 편집기]
터미널에서 사용하는 텍스트 편집기예요. :wq 를 입력하면 저장 후 종료할 수 있어요.

 

 

🙌 마무리

오늘은 에러와의 싸움이었지만 결국 해결했어요 💪
모르는 에러가 나와도 AI에게 물어보면서 하나씩 해결할 수 있다는 걸 경험한 뜻깊은 하루였습니다.

앞으로도 강의 내용을 꾸준히 기록할 예정이니, 관심과 응원 부탁드립니다! 🙏

 

#KDT #바이브코딩 #비개발자코딩 #국비지원 #AI코딩 #생성형AI #코딩입문 #깃허브푸시 #Git에러해결 #깃허브업로드