Git은 기본적으로 로컬에서 작업된 소스를 리모트에 Push 하고자 하는 Commit 히스토리 사항을 기준으로 진행된다.
이때 리모트의 Commit 히스토리와 동일하지 않으면 Push 오류가 발생한다.
로컬의 Commit 을 임의로 변경했기 때문에, 이미 리모트와 다른 히스토리를 가지고 있다.
강제푸시
Push 하는 Branch 의 이름 앞에 "+" 를 붙여주면 된다.
# git push origin +new_branch
해당 브랜치가 여러개발자가 사용되는 브랜치이면, 다른 개발자가 리모트의 브랜치를 다운받아 소스를 수정한 후 Push 한 경우 형상이 유실되기 때문에
강제 Push 하는 경우에는 다른 개발자의 소스가 유실될 가능성이 매우 높다.
이때, 이를 방지할수 있는 대책으로 다음과 같은 옵션이 있다.
# git push --force origin +new_branch
이를 방지하지 위한 대책으로 --force-with-lease 옵션을 사용한다.
리모트 브랜치가 로컬 브랜치에서 푸시한 후에 변경된 내역이 없을때에만 강제 푸시가 진행이 된다.
로컬 브랜치와 리모트 브랜치 연결 옵션
# git push -u origin NewBranch
-u | --set-upstream 옵션은 로컬 기능 개발 브랜치와 중앙저장소의 같은 이름의 브랜치를 연결하는 역할이다.
한번 연결한 후에는 git push 만 으로 push 진행이 가능하다.