2025. 5. 8. 15:31ㆍGit/Git 기초
🔗 GitHub의 원격 저장소에 Local 저장소를 연결하는법
1️⃣ GitHub에서 New repository 생성

2️⃣ Repository name 설정

→ Add a README file은 개인 선택!!
만약 선택하고 Creat repositoy할 시
아래 코드 입력 창이 안뜨고
바로 로컬 저장소가 생성됨!!
이름 설정 후 Creat repository
3️⃣ Git Bash에 생성된 코드 입력

① …or create a new repository on the command line
➤ 로컬에 아무것도 없는 상태에서 처음 Git 프로젝트를 시작할 경우
echo "# HelloWorld" >> README.md
// README.md에 ""안에 있는 단어 추가 및, README.md파일이 없을시 생성
// 그래서!! README.md 파일을 생성하고 싶지 않거나. 이미 GITHUB에서
// README.md 파일을 생성한 경우 이코드 생략 가능
git init
git add README.md // README.md 파일 생성하지 않을 경우 생략가능
git commit -m "first commit" // README.md 파일 생성하지 않을 경우 생략가능
git branch -M main // 기본 branch를 main으로 강제로 변경하는 명렁여
// 이미 main일 경우 실행하지 않아도 된다!!
git remote add origin https://github.com/HwanSeoPark/HelloWorld.git
//→ 연결할 원격 저장소 주소
git push -u origin main
순서대로!!
➕ echo "# HelloWorld" >> README.md
→ README.md 파일을 생성하고 싶지 않거나 이미 GITHUB에서 생성했을 경우 생략 가능

로컬 저장소에서 연결할 디렉토리에서 Git Bash 실행 후
echo "# HelloWorld" >> README.md 명렁여 입력시 README.md 파일이 생성된걸 확인 할 수 있다.
➕ git init

git init 코드(현재 디렉토리를 Git이 관리하는 로컬 저장소로 초기화하는 명령어) 입력
→ .git이라는 디렉토리 생성 및 로컬 디렉토리가 main으로 설정된걸 확인 할 수 있다
➕ git add README.md
git commit -m "first commit"
→ echo "# HelloWorld" >> README.md 명렁어 생략했을 시 생략 가능

git status 명렁어를 통해 파일이 untracked 상태인걸 확인
git add와 git commit 명령어를 통해 README.md 파일을
untracked → staged → unmodified (변경 없음)상태로 만들어서 원격 저장소에 공유할 수 있도록 만든다.
➕ git remote add origin 원경저장소(GITHUB 저장소) 주소

원격 저장소의 주소를 git remote add origin 명렁어에 복사하여 입력

Loacl Host Pc에서 원격 저장소의 주소가 연결된 것을 확인
➕ git push -u origin main
→ 단 한번만(저장소 연결때 마다) 입력하는 명렁어,
이후로는 git push/pull만 써도 전달 된다!!

git push -u origin main 명렁어 입력시 Local Pc와 원격 저장소가 연결된 것을 확인 할 수 있다.

GItHUB에 다시 돌아가서 새로고침 시 저장소가 생성된것을 확인 할 수 있다
② …or push an existing repository from the command line
➤ 이미 로컬에서 Git 저장소를 초기화하고, 작업과 커밋도 끝낸 상태일 경우
- 로컬에서 이미 git init, commit 등 작업 다 해둔 상태
- GitHub에 빈 저장소만 만든 후, 그걸 원격 저장소로 연결하려는 경우
git remote add origin https://github.com/HwanSeoPark/helloremoterepository.git
git branch -M main
git push -u origin main
⚠️ 원격 저장소와 로컬 저장소의 히스토리가 다를경우 ⚠️
원격 저장소에 로컬에 없는 커밋이 있는 상태에서 git push를 하려고 하면 GIt이 충돌을 방지하려고 거부한다

🛠️ 해결 흐름
① git fetch origin main
- GitHub(원격 저장소)의 커밋 기록을 로컬로 가져오기만 하는 명렁어
- 병합은 아직 하지 않음
- origin/main 브랜치가 로컬에 생기지만, 로컬 main 브랜치는 그대로 유지됨
② git merge origin/main --allow-unrelated-histories
- 원격 저장소의 브랜치와 로컬 브랜치를 병합
- 두 브랜치의 커밋 이력이 완전히 다르더라도 강제로 병합 허용
③ 위의 두 명렁어 후 push 해주기
순서대로!!
➕ git fetch origin main

git fetch 명렁어를 통해 원격 저장소의 커밋 이력을 가져오기만 함
➕ git merge origin/main --allow-unrelated-histories
git merge origin/main --allow-unrelated-histories
이 명령어는 두 Git 저장소의 히스토리가(commit 이력)가 서로 전혀 연결되어 있지 않아도
강제로 병합(merge) 하도록 허용하는 명렁어

git merge origin/main --allow-unrelated-histories 명렁어로 강제 병합
➕ git push

문제가 해결 된 것을 확인!!
🤔 만약, 로컬과 원격 저장소의 같은 파일내에서 커밋 이력이 다를 경우는?
💬 예시

git push시 오류 발생

git fetch origin main 명렁어로 원격 저장소의 커밋이력 가져오기
git merge origin/main --allow-unrelated-histories 명렁어 실행시

원격과 로컬의 README.md 파일에서 커밋이력이 달라 오류 발생
🔧 해결 절차 (충돌 처리 순서)
▶️ 충돌 난 파일 열기(예시의 경우 README.md)

HEAD는 로컬 저장소의 내용
======= 는 구분선
origin/main은 원격 저장소의 내용
▶️ 원하는 대로 수동으로 수정

README.md의 파일 내용을 직접 수정해야 한다
▶️ 수정 후 충돌 해결 완료 처리
git add .
git commit -m "원하는 문구 작성"
git merge origin/main --allow-unrelated-histories 명령어 다시 입력해 보면

현재 로컬과 원격 저장소가 동기화되어 있어서 병합 할 내용이 더 이상 없다는 것을 확인 할 수 있다
즉, 이미 git merge origin/main --allow-unrelated-histories로 병합을 완료했고,
이제 두 저장소는 같은 히스토리를 공유하고 있으므로 추가 병합이 필요하지 않다는 상태다.
▶️ 병홥 완료 후 푸시
git push
push 후에 두 저장소의 README.md를 확인 해 보면

두 저장소의 README.md가 수정한 내용으로 수정된 것을 확인 할 수 있다!!
'Git > Git 기초' 카테고리의 다른 글
| GIT의 기초 실습 (0) | 2025.12.15 |
|---|---|
| GIT의 master와 main 차이 (0) | 2025.12.15 |
| Git의 기초 2.5 — 리모트 저장소 (0) | 2025.12.15 |
| Git의 기초 — 수정하고 저장소에 저장하기 (0) | 2025.12.15 |
| GIT 저장소 만들기 (0) | 2025.12.15 |