어제 기초 Git / GitHub를 진행하다가 변경된 파일을 커밋하려고 git push를 했더니 "현재 브랜치의 끝이 리모트 브랜치보다 뒤에 있으므로 업데이트가 거부되었습니다" 오류가 떴다. 구글링 등으로 찾아보니 앞으로도 이런 오류가 잦을수도 있다는 글들을 많이 보게 됐고 후에도 찾아볼 수 있도록 기록을 남겨두려고 한다!
오류 발생 원인 💻 (추측..)
오류 발생 원인은 정확한건 아니나 어제 GitHub 을 공부할겸 테스트로 git clone으로 다른 repository를 같은 폴더에 업로드 한 뒤 지웠었는데 그걸로 인해 .git에 있는 커밋 내역들이 GitHub에 원래 있던 것과 과정이 꼬이지 않았나 생각한다.. push를 하기 전에 pull을 했을때도 병합 관련 오류가 뜨다가 강제로 명령어를 입력해서 가져오기도 했었는데 예상하기로 위 두문제에서 뭔가 오류가 생긴듯 하다.
일단 git log를 통해 내역을 먼저 본 후 git repository 에서 커밋 내역을 봤는데 가장 최근 커밋 내역이 다른게 보인다.
구글링 해본 결과 과거에 커밋했던 이력과 현재 내가 하려고 하는 커밋이 서로 충돌해서 발생 하는 문제라곤 하는데 아직 정확한 원인은 모르겠다
오류 해결 방법 👩💻
git push origin (브랜치명) --force
push 뒤에 --force 를 붙여주면, 과거 커밋 내역과 상괒없이 지금 현재 커밋내용으로 덮어씌어 버리는 명령어라고 한다.
* 해당 명령어를 쓰게 되면 기존 브랜치에 있는 모든게 날라가고 로컬 브랜치 내용이 들어가기 때문에 사용을 권장하지 않는다고 한다.
그러나 나는 현재 테스트 중이므로 사용해 보려 한다!
브랜치에 남겨놓은 코드 변경 이력을 origin 라는 원격 저장소에 올리기 위한 명령이 기도 한데 내 브랜치 명은 'main' 이므로
아래 명령어를 입력해보고자 한다.
git push origin main --force
실행결과를 보니 기존에 있었던 'new commit' 은 사라지고 로컬에서 새로 추가한 'lion file'은 추가된것을 볼 수 있다.
++추가로) --forece 명령어 대신 -f 로도 쓸 수 있다고 한다.
💡 위 방법 외에도 Pull 로 해결하거나 git repository 에서 과거 commit 내역을 삭제하는 방법도 있다고 한다.
'dev > Git GitHub' 카테고리의 다른 글
GitHub 사용방법 - 기초 (0) | 2023.03.01 |
---|---|
Git 사용방법 - 기초 (2) | 2023.03.01 |
댓글