https://easy-6.tistory.com/30 해당 내용을 통해 git과 VSCode를 연결하여 repository 생성 및 연결하는 걸 볼 수 있다.
# gitHub 와 VSCode 연결

1. git init (초창기)
2. git hub에서 repository 생성
3. git add .
4. git commit -m "first commit"
5. git branch -M main // branch를 main으로 생성
if git branch -m master로 작성했다면 branch명이 master로 생성
6. git remote add origin https://github.com/깃계정명/repository명.
(git remote add origin 나의 repository 주소 )
7.
7-1 git push origin main // branch를 main으로 생성했을 때
7-2 git push origin master // branch를 master로 생성했을 때
# 에러 발생
1. -- warning: in the working copy of 'README.md', LF will be replaced by CRLF
the next time Git touches it
-> Git이 파일의 줄바꿈 방식(LF와 CRLF)을 자동으로 변환하려고 할 때 발생하는 일반적인 알림이며,
보통 Windows에서는 기본적으로 CRLF를 사용하고, Unix/Linux나 macOS에서는 LF를 사용하기 때문에 이런 차이가 발생함.
# 해결방법
<h2>Git 설정 변경하기 </h2>
1. Windows 환경
git config --global core.autocrlf true
2. macOS/Linux 환경
git config --global core.autocrlf input
# 에러 발생
1. 에러 내용
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/ParkInJae/react_chapter_04.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. If you want to integrate the remote changes,
hint: use 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
-> 이 에러메시지는 로컬(master) 브랜치가 원격(master) 브랜치보다 뒤처져 있어서 발생하는 일반적인 Git 충돌 유형입니다.<br/>
즉, 원격 저장소에 더 최신 커밋이 있는데, 로컬에서는 그 커밋을 가져오지 않고 푸시를 시도하니 “non-fast-forward” 에러가 발생함. <br/>
# 해결방법
1.에러가 발생하는 원인
누군가(혹은 본인이 다른 환경에서) 원격 저장소에 먼저 커밋을 올렸고,
로컬 저장소가 그 커밋들을 받아오지 않은 상태에서 push를 하려고 할 때
Git이 “로컬이 원격보다 뒤처져 있으니, 원격 저장소에 있는 변경 사항부터 먼저 합치라”고 경고하는 것.
2. 해결 방법
원격 변경 사항을 먼저 가져와서 병합(merge)하거나 리베이스(rebase)
2-1. 변경 사항 가져와서 병합하기
// 원격 저장소 변경사항 받아오기
git pull origin master
-> git pull을 통해 원격 저장소(master 브랜치)의 변경 내역을 로컬로 가져옴.
만약 자동 병합이 잘 되면 그대로 진행하면 됨.<br/>
충돌(conflict)이 발생하면, 충돌 난 파일을 수동으로 수정하고 다시 커밋.<br/>
git push origin master
-> pull로 최신 내용을 병합했으니 이제 push가 정상적으로 될 것임. <br/>
2-2. rebase 방식으로 깔끔하게 이력 정리
git pull --rebase origin master
명령어를 사용하면 머지 커밋 없이 로컬 변경 사항을 원격 브랜치 위에 얹는(rebase) 방식을 사용.
충돌이 나면 수동으로 충돌을 해결한 뒤 git add . → git rebase --continue 순서로 진행.
이후에 git push origin master로 마무리.
주의: rebase 방식을 사용하면 Git 히스토리가 깔끔해지지만, 이미 공개 저장소에서 공유된 브랜치에 rebase를 남발하면 다른 협업자들의 이력이 꼬일 수 있으므로 주의해야함.
2-3. 강제 푸시(Force Push)
정말 “원격 저장소의 변경 사항을 무시”하고 로컬 이력만으로 덮어쓰고 싶다면
git push origin master --force
하지만 이렇게 하면 원격 저장소에 있던 커밋들이 사라질 수 있고, 협업 중이라면 다른 사람들의 작업 이력이 날아가거나 이력이 꼬여버리는 심각한 문제가 생길 수 있기에 주의.
따라서, 개인 저장소에서 내 로컬 이력만 남기고 싶을 때 또는 원격 변경 내역이 필요 없을 때만 제한적으로 사용해야함.
3. 정리
non-fast-forward 에러는 원격에 더 새로운 커밋이 있어, 로컬 브랜치가 뒤처졌을 때 발생합니다. <br/>
가장 일반적인 해결책은
git pull origin master(또는 git pull --rebase origin master)
위의 코드를 통해 원격 저장소의 변경을 받아와서 충돌을 해결한 후, 다시 git push origin master를 수행하는 것
원격 커밋이 필요 없다”면 강제 푸시(git push --force)를 할 수도 있지만, 협업 환경에서 매우 위험할 수 있으므로 주의가 필요함.
'Git' 카테고리의 다른 글
| [Git] 로컬 브랜치와 원격 브랜치 연결되어 있지 발생한 에러 "There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details." (0) | 2025.03.16 |
|---|---|
| [Git] git init, git add . , git pull 이미지 (0) | 2025.03.16 |
| [Git] Git push 관련 에러 (0) | 2025.03.11 |
| [Git] VSCode와 git의 연동 및 git 내용 (0) | 2025.03.09 |
| [Git] git허브 설정 및 react 파일 올리기 (0) | 2025.02.28 |