[GIT] ! [rejected] master -> master (non-fast-forward)

2016. 1. 25. 10:52프로그래밍/형상관리

728x90
728x90

error

To prevent you from losing history, non-fast-forward updates were rejected  
Merge the remote changes (e.g. ‘git pull’) before pushing again. See the  
‘Note about fast-forwards’ section of ‘git push –help’ for details.
  • 대충 해당 에러는 원격 저장소 정보가 손실 될 수 있으니 확인해보라고 한다.
  • push 하려고 하는데 remote에서 누군가 먼저 push를 했다던가.. 여러 원인이 있을 수 있다.

해결

첫 번째 경우는 브랜치 문제일 가능성이 있다.

  • 다른 브랜치를 보고 있을 수 있으므로 현재 local 브랜치가 push 하려는 remote 브랜치와 일치하는지 확인 해봐야 한다.
  • 아니라면 git checkout을 통해 브랜치를 바꿔주기. 아무튼 브랜치 확인.
  • 가끔 다른 브랜치에서 푸쉬를 시도하다보면 이런 일이 생길때가 있다.

두 번째 경우는 현재 나의 local과 remote의 버전이 차이가 나서이다.

  • 다른 프로그래머가 코드를 먼저 올린 경우.
  • 내가 최신 fetch와 pull 또는 rebase 등 코드 최신화 없이 작업을 하고 푸쉬하는 경우.
  • remote와 local간 히스토리가 꼬이기때문에 필히 pull이나 rebase를 해줘야 한다.
  • git fetch -> git rebase를 통해 현재 나의 커밋을 탑으로 올리고 최신 소스를 만들어 주면 된다.

강제 푸쉬

  • 강제로 푸쉬하는 방법은 git push origin +master 명령어가 있는데..
  • 원격 저장소는 소중하므로 확인에 확인을 거쳐 명령을 실행하자. 추천하진 않는다.
  • 개인 혼자 사용하거나 팀 전체로 코드 히스토리를 강제로 변경해야 된다면 사용하면 될듯..
728x90
반응형