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
Successfully rebased and updated refs/heads/test.
오오!! 뭔가 성공했다. 깃툴인 포크로(git fork) 확인해 보니까 뭔가 자동으로 merge가 되었다. git stash도 자동으로 빠져 나왔다.(아니 이건 왜?)
원래 stash 하고 다시 불러오려면 pop을 해야하는데 포크상에선 빠져나왔길래 궁금해서 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
src/components/layout/signup/header.tsx: needs merge
src/pages/institution-info/index.control.tsx: needs merge
error: 인덱스를 쓸 수 없습니다
일단 에러 메시지에서 push 하라고 해서 push 했다. 지금 포크상으론 변경사항이 있는데 다행히 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
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
stash도 잘 된건가 궁금해서 때려봤는데,
어어 잘 됐네! pop 확인하고 마무리 하자!
아까 문제 다시 생김..
아무래도 기존 꼬인 부분을 다시 가져와서 생기는 문제이지 싶다. 다시 stash 하지 않는 이상 계속 이거 나오겠지.
그래서 다시 reset으로 마무리 함.