error: dst refspec {branch’s name} matches more than one error: failed to push some refs to {branch’s name}

개발새발·2023년 5월 7일

git

목록 보기
6/7

로컬에서 깃랩으로 push를 하려고 했더니 자꾸 제목과 같은 오류가 났다. 그래서 처음에는 새로운 브랜치로 만들어서 배포를 했는데 자꾸자꾸 저 에러가 나니까.. 브랜치가 늘어나는 것이다. ㅠㅠ 아, 진짜 해결해야지 싶어서 찾아보다가 완료!

🥵 문제

  • 로컬에서 푸시 :
    error: dst refspec {branch’s name} matches more than one
    error: failed to push some refs to {branch’s name}
  • 깃랩에서 이상증상 :
    gitlab에서 존재하는 브랜치들 확인해보니 해당 브랜치가 하나였는데, gitlab에서 새로운 브랜치 생성하려고 누르니 기준이 되는 브랜치명 리스트들을 보니 해당 브랜치가 두개가 존재했다.

🙊 원인

로컬저장소에서 원격 저장소에 푸시하려는 브랜치 이름이 충돌해서 발생한다고 한다. 또는 로컬 저장소와 원격 저장소의 차이가 있기 때문! 결국, 로컬과 원격 저장소의 싱크가 안 맞아서 생긴 문제다.


💝 해결 과정

  1. 로컬에서 git checkout {branch's name} 로 해당 브랜치로 이동
  2. git branch 로 로컬 브랜치 목록을 확인
  3. {branch’s name} 이 두개 이상인지 확인
  4. {branch’s name} 가 두개이상이라면, git merge {branch’s name} {branch’s name} 명령어로 병합후 충돌 해결 → 하지만 나는 두개 이상이 아니였다… 그래서 바로 4번으로.
  5. git push -f origin {branch's name} 으로 강제 푸시 (브랜치가 덮어씌워질 수 있으니 커밋을 잘 확인할것!) → 하지만 이것도 해결되지 않았다.
  6. gitlab에서 {branch’s name} 기준으로 {another’s name} 브랜치 생성
  7. 깃랩에서 {branch’s name} 삭제
  8. 로컬에서 git checkout {branch's name} 로 해당 브랜치로 이동
  9. 로컬에서 git push origin :{branch's name} 로 로컬 저장소의 브랜치를 푸쉬하는 것이 아니라 {branch’s name} 브랜치를 비워줌
  10. git pull origin {another’s name} 로 {branch’s name} 브랜치 내용으로 다시 채워줌
  11. git push origin/{branch's name} 으로 원격에도 내용 다시 채워주기

끗- 😊

profile
발새발개

0개의 댓글