[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
반응형
'프로그래밍 > 형상관리' 카테고리의 다른 글
[GIT] GIT 이름에 대해 (2) | 2016.04.16 |
---|---|
[SVN] Can't create tunnel : The system cannot find the path specified. (1) | 2016.03.10 |
[GIT]git bash 트렁크 바로가기 (0) | 2016.03.08 |
[GIT] git ignore (2) | 2016.01.30 |
[GIT] git stash 써보기 (2) | 2016.01.29 |
[SVN] cleanup이 안 될때! (5) | 2015.12.29 |
[GIT] Data Transport Command (0) | 2015.10.07 |