본문 바로가기
카테고리 없음

[git 에러] fatal: 정방향이 불가능하므로, 중지합니다.

by 라스형 2024. 12. 19.

ReadME를 수정할 일이 있어서 수정 - 커밋하고 푸시를 하니 아래 에러가 나를 반겼다.

 


당장 해결이 급한 개발자들을 위한 해결 방법

 

git pull --rebase

 

내 상황과 해결방법을 자세히 보려면 아래 확인!


 

깃 푸시 에러
깃 푸시 에러

[코드는 더보기로 확인]

더보기
 ! [rejected]        test -> test (non-fast-forward)
error: 레퍼런스를 '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.

 

엥 뭐여.. 왜 안되는거지..

 

먼저 확인해 보니 다른 코드가 Merge 되어 있었음.

 

그래서 우선 pull 받아서 다시 push 해야 겠다고 생각해서 git pull 했더니 또 뭐가 안된다고 한다.

 

깃 풀 에러
깃 풀 에러

 

[코드는 더보기로 확인]

더보기
 git pull
fatal: Cannot fast-forward to multiple branches.

 

아니 왜.. fetch를 해야 하나 하고 아래 명령어로 fetch 전체를 받았다.

git fetch --all

 

 

별다른 반응이 없어서 다시 pull 받았는데 에러 나오면서 뭐를 또 하라고 한다.

깃 설정
깃 설정

 

[코드는 더보기로 확인]

더보기
 git pull
hint: Diverging branches can't be fast-forwarded, you need to either:
hint:
hint:   git merge --no-ff
hint:
hint: or:
hint:
hint:   git rebase
hint:
hint: Disable this message with "git config advice.diverging false"
fatal: 정방향이 불가능하므로, 중지합니다.

 

아니 이게 무슨 의미지..

깃 푸시 에러
깃 푸시 에러

 

혹시나 지금 커밋한게 문제가 있어서 그런가 싶어 stash 해서 숨기고 다시 pull 했지만 동일한 상황이었다.

 

[코드는 더보기로 확인]

더보기
 git stash
Saved working directory and index state WIP on test: 590d93d [doc] template 수정

-

 git pull
hint: Diverging branches can't be fast-forwarded, you need to either:
hint:
hint:   git merge --no-ff
hint:
hint: or:
hint:
hint:   git rebase
hint:
hint: Disable this message with "git config advice.diverging false"
fatal: 정방향이 불가능하므로, 중지합니다.

 

엥? merge를 먼저 하라고? 도저히 모르겠어서 검색해 보았다. 역시 이런 문제를 해결한 많은 능력자들이 있었음. 짱짱!

 

해결 방법
해결 방법

 

우선 해결이 급해서 자세히 확인해 보는건 뒤로 미루고 내가 선택한 방법은 이거였음.

git pull --rebase

 

방법을 알았으니 명령어를 때려보았다!

 

git pull --rebase
git pull --rebase

[코드는 더보기로 확인]

더보기
 git pull --rebase
Successfully rebased and updated refs/heads/test.

 

오오!! 뭔가 성공했다. 깃툴인 포크로(git fork) 확인해 보니까 뭔가 자동으로 merge가 되었다. git stash도 자동으로 빠져 나왔다.(아니 이건 왜?)

 

원래 stash 하고 다시 불러오려면 pop을 해야하는데 포크상에선 빠져나왔길래 궁금해서 pop 명령어를 쳐봤다.(하지 마세요 ㅠㅠ)

 

git stash pop

 

 

그랬더니 난리남..

 

git stash pop
git stash pop 에러

 

[코드는 더보기로 확인]

더보기
 git stash pop
자동 병합: src/components/layout/signup/header.tsx
충돌 (내용): src/components/layout/signup/header.tsx에 병합 충돌
자동 병합: src/pages/institution-info/index.control.tsx
충돌 (내용): src/pages/institution-info/index.control.tsx에 병합 충돌
자동 병합: src/pages/member-info/index.control.tsx
현재 브랜치 test
브랜치가 'origin/test'보다 1개 커밋만큼 앞에 있습니다.
  (로컬에 있는 커밋을 제출하려면 "git push"를 사용하십시오)

커밋할 변경 사항:
  (use "git restore --staged <file>..." to unstage)
        수정함:        src/hooks/useUserInfo.tsx
        수정함:        src/pages/member-info/index.control.tsx

병합하지 않은 경로:
  (use "git restore --staged <file>..." to unstage)
  (해결했다고 표시하려면 "git add <파일>..."을 사용하십시오)
        양쪽에서 수정:  src/components/layout/signup/header.tsx
        양쪽에서 수정:  src/pages/institution-info/index.control.tsx

다시 필요할 때를 대비해 스태시 항목을 보관합니다.

 

뭐.. 뭐야.. 괜히 했나.. ㅠㅠ 다시 stash 넣어 버리자 했는데 이것도 불가..

 

git stash
git stash

 

[코드는 더보기로 확인]

더보기
 git stash 
src/components/layout/signup/header.tsx: needs merge
src/pages/institution-info/index.control.tsx: needs merge
error: 인덱스를 쓸 수 없습니다

 

일단 에러 메시지에서 push 하라고 해서 push 했다. 지금 포크상으론 변경사항이 있는데 다행히 push 는 날라감.

 

git push
git push

 

git push
git push

 

[코드는 더보기로 확인]

더보기
 git push -u origin test
오브젝트 나열하는 중: 12, 완료.
오브젝트 개수 세는 중: 100% (12/12), 완료.
Delta compression using up to 8 threads
오브젝트 압축하는 중: 100% (5/5), 완료.
오브젝트 쓰는 중: 100% (7/7), 1.20 KiB | 1.21 MiB/s, 완료.
Total 7 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
To git
   446fcd8..3c16403  test -> test
branch 'test' set up to track 'origin/test'.

 

다행히 정상적으로 push 날라가서 처리 되었다. 이제 stash 다시 확인해 봤는데 merge 하라고만 하네..

git stash
git stash pop
git stash pop

[코드는 더보기로 확인]

더보기
 git stash
src/components/layout/signup/header.tsx: needs merge
src/pages/institution-info/index.control.tsx: needs merge
error: 인덱스를 쓸 수 없습니다

-

 git stash pop
src/components/layout/signup/header.tsx: needs merge
src/pages/institution-info/index.control.tsx: needs merge
error: 인덱스를 쓸 수 없습니다
다시 필요할 때를 대비해 스태시 항목을 보관합니다.

 

해결 방법을 모르겠어서 그냥 reset으로 마무리 했다. 그것도 hard로.. (reset --hard 는 조심히 사용! 근데 난 자주 씀)

 

git reset --hard
git reset --hard

git reset --hard

 

stash도 잘 된건가 궁금해서 때려봤는데,

git stash
git stash

어어 잘 됐네! pop 확인하고 마무리 하자!

git stash pop
git stash pop

 

아까 문제 다시 생김..

아무래도 기존 꼬인 부분을 다시 가져와서 생기는 문제이지 싶다. 다시 stash 하지 않는 이상 계속 이거 나오겠지.

 

그래서 다시 reset으로 마무리 함.