Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 코딩테스트
- node.js
- 엘리스sw트랙
- 방송대
- Git
- TiL
- 코드잇
- 데이터베이스시스템
- redis
- 방송대컴퓨터과학과
- 개발자취업
- nestjs
- MySQL
- 중간이들
- presignedurl
- Python
- Cookie
- aws
- 항해99
- 꿀단집
- 프로그래머스
- CSS
- 99클럽
- 코딩테스트준비
- 유노코딩
- SQL
- 파이썬프로그래밍기초
- JavaScript
- 파이썬
- HTML
Archives
- Today
- Total
배꼽파지 않도록 잘 개발해요
[Git] git push rejected non-fast-forward 오류의 원인과 해결방법 본문
BackEnd/AWS / Docker / Git
[Git] git push rejected non-fast-forward 오류의 원인과 해결방법
꼽파 2024. 8. 23. 17:20PS C:\Users\airyt\HoneyTouse_BE> git push origin google
To https://github.com/HoneyTouse/HoneyTouse_BE.git
! [rejected] google -> google (non-fast-forward)
error: failed to push some refs to 'https://github.com/HoneyTouse/HoneyTouse_BE.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.
PS C:\Users\airyt\HoneyTouse_BE> git fetch origin
PS C:\Users\airyt\HoneyTouse_BE> git pull origin google
From https://github.com/HoneyTouse/HoneyTouse_BE
* branch google -> FETCH_HEAD
Merge made by the 'ort' strategy.
README.md | 14 +++---
src/middleware/adminMiddleware.js | 56 ----------------------
src/middleware/index.js | 2 -
src/middleware/loginMiddleware.js | 97 +++++++++++++++++++++++++++++++++++++++
src/router/adminRouter.js | 39 ++++++++++------
5 files changed, 130 insertions(+), 78 deletions(-)
delete mode 100644 src/middleware/adminMiddleware.js
현상
- 'git push origin google' 명령어로 로컬 브랜치 'google'을 원격 저장소의 'google' 저장소로 푸시하려고 시도했으나, 거부되었다.
- 에러 메시지를 살펴보면 'non-fast-forward' 오류로 인해 푸시가 거부되었다고 써있다.
원인
- 로컬 브랜치 'google'의 상태가 원격 브랜치 'google'보다 뒤쳐져 있다.
- 원격 브랜치에서 다른 사람이 이미 업데이트를 했고, 이 업데이트가 로컬 브랜치에 반영되지 않은 상태이다.
- 이런 상황에서 직접 푸시를 하게되면, 원격 저장소의 코드가 덮어씌워질 수 있으므로 오류가 나게 된다.
문제
- 원격 저장소의 google 브랜치가 로컬 브랜치의 상태보다 더 최신이다.
- 로컬에서 작업하는 동안 원격 저장소의 동일한 브랜치에서 다른 작업자가 새로운 커밋을 추가했거나 변경을 적용한 경우, 로컬 브랜치와 원격 브랜치 간에 차이가 발생할 수 있다.
- Git은 이 차이를 감지하고, 충돌 가능성을 방지하기 위해 푸시를 거부한다.
해결
1. 원격 브랜치의 최신 상태를 로컬로 병합한다.
- git pull origin google 명령어를 사용하여 원격 브랜치의 변경사항을 로컬 브랜치로 병합한다.
- 위 사진에서 이 명령을 실행한 후, 자동 병합이 발생했고, 일부 파일에서 변경사항이 적용되었다.
- 다시 git push origin google 명령어를 실행하여 성공적으로 푸시할 수 있다.
git pull origin google
git push origin google
2. 충돌 발생시 수동으로 해결한다.
- 만약 git pull 시 충돌이 발생한다면, 충돌된 파일을 수동으로 수정한 후 git add . 명령어로 변경 사항을 스테이징한다.
- 이후 git commit으로 커밋한 후 다시 git push를 시도한다.
git pull
git add .
git commit
git push
3. 강제 푸시 (주의 필요):
- 만약 원격 브랜치의 변경 사항을 무시하고 현재 로컬 브랜치를 그대로 푸시하고 싶다면, git push origin google --force 명령어를 사용할 수 있다.
- 그러나 이는 원격 브랜치의 변경 사항을 덮어씌우는 위험한 작업이므로 주의가 필요하다.
- 아직 이 명령어를 실행해본적이 없다.
git push origin google --force
Fast-Forward vs Non-Fast-Forward
- Fast-Forward : 단순히 로컬 브랜치가 원격 브랜치보다 뒤에 있는 경우, 추가적인 병합없이 푸시가 가능하다.
- Non-Fast-Forward : 로컬과 원격 브랜치가 서로 다른 커밋을 포함하고 있어서 단순한 푸시로는 해결되지 않고 병합 등의 추가 작업이 필요하다.
728x90
'BackEnd > AWS / Docker / Git' 카테고리의 다른 글
[Git] 현재 작업 중인 브랜치에 dev 브랜치의 최신 내용을 반영하는 방법 - merge와 rebase (0) | 2024.09.03 |
---|---|
[Docker] 윈도우에서 도커 설치 후 로그인이 되지 않을 때 해결방법 (0) | 2024.08.23 |