CS/GIT

[Git] Troubleshooting: ! [rejected] master -> master (fetch first)

뚱요 2021. 11. 17. 14:20
반응형

! [rejected] master -> master (fetch first)

 

! [rejected] master -> master (fetch first)

error: failed to push some refs to 깃 주소

hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

문제

가져오기(fetch) 전에 이 저장소에 커밋할 수 없음을 보여줍니다. 현재 작업 중인 로컬 저장소가 동기화되지 않았을 때 발생한다. 동기화되지 않은 상태에서 다시 push 하면 데이터가 소실될 수 있어하고 경고하여 Git이 버전 유지 관리를 보호하기 때문에 발생합니다.

커밋을 시도하면 최신 변경 사항이 엉망이 될 수 있습니다. Git이 변경하기 전에 로컬 시스템에 최신 복사본을 유지하도록 강제하는 이유입니다.

(비추천) 트리가 손상될 수 있으므로 저장소를 커밋과 병합하도록 강제하는 것은 비추천 드립니다.

git push origin master --force
 

 

해결방법

trial1. (failed) gitlab사용하는데 다른 블로그에서 소개한 임시방편으로는 도저히 되지 않았다.

#최신사항 동기화
git pull origin main
#강제 push
git push origin +main

git pull은 fetch + merge를 동시에 수행하나 이러한 간단한 명령어 때문에 에러가 나면 찾기 쉽지 않아 보통 fetch, merge를 사용한다.

trial2. (success) 영문 검색해서 메시지에 나온 것처럼 fetch 하는 방법 적용 

1. 가져올 때 차이점을 비교 대조해서 반영하여 병합한다.

git fetch origin master
git merge origin master

 

 Please enter a commit message to explain why this merge is necessary, especially if it merges an updated upstream into a topic branch

(1). i를 누른 후merge에 대한 message를 입력한다.

i(insert) 메시지를 입력한다

(2). esc + :wq를 입력 후  enter

esc(exit) + w(write) q(quit)

2. git에 반영한다. (보통의 프로세스)

git add .
git commit -m 'your commit message'
git push origin master

비번 입력하고 나면 성공적으로 반영됨

반응형